Adding upstream version 25.0.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
dd3422a695
commit
91ffc387a9
84 changed files with 33016 additions and 31040 deletions
File diff suppressed because one or more lines are too long
|
@ -67,9 +67,6 @@
|
|||
<li>
|
||||
<a class="variable" href="#pretty">pretty</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="variable" href="#schema">schema</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#tokenize">tokenize</a>
|
||||
</li>
|
||||
|
@ -809,117 +806,114 @@ make check # Full test suite & linter checks
|
|||
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="n">pretty</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="sd">"""Whether to format generated SQL by default."""</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="n">schema</span> <span class="o">=</span> <span class="n">MappingSchema</span><span class="p">()</span>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd">"""The default schema used by SQLGlot (e.g. in the optimizer)."""</span>
|
||||
</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><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a><span class="k">def</span> <span class="nf">tokenize</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="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">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-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="sd"> Tokenizes the given SQL string.</span>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a><span class="sd"> sql: the SQL code string to tokenize.</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd"> read: the SQL dialect to apply during tokenizing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a><span class="sd"> The resulting list of tokens.</span>
|
||||
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</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><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <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="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><span id="L-89"><a href="#L-89"><span class="linenos"> 89</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">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</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-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"> Args:</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a><span class="sd"> The resulting syntax tree collection.</span>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</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-103"><a href="#L-103"><span class="linenos">103</span></a>
|
||||
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="k">def</span> <span class="nf">tokenize</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="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">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-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd"> Tokenizes the given SQL string.</span>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="sd"> sql: the SQL code string to tokenize.</span>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="sd"> read: the SQL dialect to apply during tokenizing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="sd"> The resulting list of tokens.</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span>
|
||||
</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><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span>
|
||||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <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="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><span id="L-86"><a href="#L-86"><span class="linenos"> 86</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">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</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-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="sd"> Args:</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd"> The resulting syntax tree collection.</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</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-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><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="k">def</span> <span class="nf">parse_one</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="p">,</span> <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">E</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">E</span><span class="p">:</span> <span class="o">...</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="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 class="n">sql</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">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">E</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">E</span><span class="p">:</span> <span class="o">...</span>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a>
|
||||
</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="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="k">def</span> <span class="nf">parse_one</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">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> <span class="o">...</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="nd">@t</span><span class="o">.</span><span class="n">overload</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a><span class="k">def</span> <span class="nf">parse_one</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">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> <span class="o">...</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><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</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-116"><a href="#L-116"><span class="linenos">116</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-117"><a href="#L-117"><span class="linenos">117</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-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="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</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-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="sd"> Args:</span>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a><span class="sd"> dialect: the SQL dialect (alias for read)</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a><span class="sd"> The syntax tree for the first parsed statement.</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a><span class="sd"> """</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">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="ow">or</span> <span class="n">dialect</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">if</span> <span class="n">into</span><span class="p">:</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</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-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">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-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">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-142"><a href="#L-142"><span class="linenos">142</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-143"><a href="#L-143"><span class="linenos">143</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-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</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><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">def</span> <span class="nf">transpile</span><span class="p">(</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</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-152"><a href="#L-152"><span class="linenos">152</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-153"><a href="#L-153"><span class="linenos">153</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-154"><a href="#L-154"><span class="linenos">154</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-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="o">**</span><span class="n">opts</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 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-157"><a href="#L-157"><span class="linenos">157</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</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-159"><a href="#L-159"><span class="linenos">159</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-160"><a href="#L-160"><span class="linenos">160</span></a>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a><span class="sd"> sql: the SQL code string to transpile.</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</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-164"><a href="#L-164"><span class="linenos">164</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-165"><a href="#L-165"><span class="linenos">165</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-166"><a href="#L-166"><span class="linenos">166</span></a><span class="sd"> the source and the target dialect.</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="sd"> error_level: the desired error level of the parser.</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a><span class="sd"> The list of transpiled SQL statements.</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">write</span> <span class="o">=</span> <span class="p">(</span><span class="n">read</span> <span class="k">if</span> <span class="n">write</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">write</span><span class="p">)</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-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">write</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">write</span><span class="p">)</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="p">[</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">write</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="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 class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</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-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">def</span> <span class="nf">parse_one</span><span class="p">(</span>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">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-113"><a href="#L-113"><span class="linenos">113</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-114"><a href="#L-114"><span class="linenos">114</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-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="o">**</span><span class="n">opts</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 class="o">-></span> <span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</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-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="sd"> Args:</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a><span class="sd"> dialect: the SQL dialect (alias for read)</span>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a><span class="sd"> The syntax tree for the first parsed statement.</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><span id="L-131"><a href="#L-131"><span class="linenos">131</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="ow">or</span> <span class="n">dialect</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">if</span> <span class="n">into</span><span class="p">:</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</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-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</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-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="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-139"><a href="#L-139"><span class="linenos">139</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-140"><a href="#L-140"><span class="linenos">140</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-141"><a href="#L-141"><span class="linenos">141</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="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</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-144"><a href="#L-144"><span class="linenos">144</span></a>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span>
|
||||
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</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-149"><a href="#L-149"><span class="linenos">149</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-150"><a href="#L-150"><span class="linenos">150</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-151"><a href="#L-151"><span class="linenos">151</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-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="o">**</span><span class="n">opts</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 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-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"> Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</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-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="sd"> Args:</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a><span class="sd"> sql: the SQL code string to transpile.</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</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-161"><a href="#L-161"><span class="linenos">161</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-162"><a href="#L-162"><span class="linenos">162</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-163"><a href="#L-163"><span class="linenos">163</span></a><span class="sd"> the source and the target dialect.</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a><span class="sd"> error_level: the desired error level of the parser.</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</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="sd"> Returns:</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a><span class="sd"> The list of transpiled SQL statements.</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">write</span> <span class="o">=</span> <span class="p">(</span><span class="n">read</span> <span class="k">if</span> <span class="n">write</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">write</span><span class="p">)</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-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">write</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">write</span><span class="p">)</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">return</span> <span class="p">[</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">write</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="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 class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="p">]</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -949,20 +943,6 @@ make check # Full test suite & linter checks
|
|||
</div>
|
||||
|
||||
|
||||
</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>
|
||||
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#schema"></a>
|
||||
|
||||
<div class="docstring"><p>The default schema used by SQLGlot (e.g. in the optimizer).</p>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
<section id="tokenize">
|
||||
<input id="tokenize-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
|
@ -975,19 +955,19 @@ make check # Full test suite & linter checks
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#tokenize"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="tokenize-73"><a href="#tokenize-73"><span class="linenos">73</span></a><span class="k">def</span> <span class="nf">tokenize</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="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">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="tokenize-74"><a href="#tokenize-74"><span class="linenos">74</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="tokenize-75"><a href="#tokenize-75"><span class="linenos">75</span></a><span class="sd"> Tokenizes the given SQL string.</span>
|
||||
</span><span id="tokenize-76"><a href="#tokenize-76"><span class="linenos">76</span></a>
|
||||
</span><span id="tokenize-77"><a href="#tokenize-77"><span class="linenos">77</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="tokenize-78"><a href="#tokenize-78"><span class="linenos">78</span></a><span class="sd"> sql: the SQL code string to tokenize.</span>
|
||||
</span><span id="tokenize-79"><a href="#tokenize-79"><span class="linenos">79</span></a><span class="sd"> read: the SQL dialect to apply during tokenizing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="tokenize-80"><a href="#tokenize-80"><span class="linenos">80</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="tokenize-81"><a href="#tokenize-81"><span class="linenos">81</span></a>
|
||||
</span><span id="tokenize-82"><a href="#tokenize-82"><span class="linenos">82</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="tokenize-83"><a href="#tokenize-83"><span class="linenos">83</span></a><span class="sd"> The resulting list of tokens.</span>
|
||||
</span><span id="tokenize-84"><a href="#tokenize-84"><span class="linenos">84</span></a><span class="sd"> """</span>
|
||||
</span><span id="tokenize-85"><a href="#tokenize-85"><span class="linenos">85</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="tokenize-70"><a href="#tokenize-70"><span class="linenos">70</span></a><span class="k">def</span> <span class="nf">tokenize</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="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">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="tokenize-71"><a href="#tokenize-71"><span class="linenos">71</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="tokenize-72"><a href="#tokenize-72"><span class="linenos">72</span></a><span class="sd"> Tokenizes the given SQL string.</span>
|
||||
</span><span id="tokenize-73"><a href="#tokenize-73"><span class="linenos">73</span></a>
|
||||
</span><span id="tokenize-74"><a href="#tokenize-74"><span class="linenos">74</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="tokenize-75"><a href="#tokenize-75"><span class="linenos">75</span></a><span class="sd"> sql: the SQL code string to tokenize.</span>
|
||||
</span><span id="tokenize-76"><a href="#tokenize-76"><span class="linenos">76</span></a><span class="sd"> read: the SQL dialect to apply during tokenizing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="tokenize-77"><a href="#tokenize-77"><span class="linenos">77</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="tokenize-78"><a href="#tokenize-78"><span class="linenos">78</span></a>
|
||||
</span><span id="tokenize-79"><a href="#tokenize-79"><span class="linenos">79</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="tokenize-80"><a href="#tokenize-80"><span class="linenos">80</span></a><span class="sd"> The resulting list of tokens.</span>
|
||||
</span><span id="tokenize-81"><a href="#tokenize-81"><span class="linenos">81</span></a><span class="sd"> """</span>
|
||||
</span><span id="tokenize-82"><a href="#tokenize-82"><span class="linenos">82</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1021,22 +1001,22 @@ make check # Full test suite & linter checks
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#parse"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse-88"><a href="#parse-88"><span class="linenos"> 88</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span>
|
||||
</span><span id="parse-89"><a href="#parse-89"><span class="linenos"> 89</span></a> <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="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><span id="parse-90"><a href="#parse-90"><span class="linenos"> 90</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">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="parse-91"><a href="#parse-91"><span class="linenos"> 91</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="parse-92"><a href="#parse-92"><span class="linenos"> 92</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-93"><a href="#parse-93"><span class="linenos"> 93</span></a>
|
||||
</span><span id="parse-94"><a href="#parse-94"><span class="linenos"> 94</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="parse-95"><a href="#parse-95"><span class="linenos"> 95</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="parse-96"><a href="#parse-96"><span class="linenos"> 96</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="parse-97"><a href="#parse-97"><span class="linenos"> 97</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="parse-98"><a href="#parse-98"><span class="linenos"> 98</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span>
|
||||
</span><span id="parse-99"><a href="#parse-99"><span class="linenos"> 99</span></a>
|
||||
</span><span id="parse-100"><a href="#parse-100"><span class="linenos">100</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="parse-101"><a href="#parse-101"><span class="linenos">101</span></a><span class="sd"> The resulting syntax tree collection.</span>
|
||||
</span><span id="parse-102"><a href="#parse-102"><span class="linenos">102</span></a><span class="sd"> """</span>
|
||||
</span><span id="parse-103"><a href="#parse-103"><span class="linenos">103</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</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-85"><a href="#parse-85"><span class="linenos"> 85</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span>
|
||||
</span><span id="parse-86"><a href="#parse-86"><span class="linenos"> 86</span></a> <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="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><span id="parse-87"><a href="#parse-87"><span class="linenos"> 87</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">Expression</span><span class="p">]]:</span>
|
||||
</span><span id="parse-88"><a href="#parse-88"><span class="linenos"> 88</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="parse-89"><a href="#parse-89"><span class="linenos"> 89</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-90"><a href="#parse-90"><span class="linenos"> 90</span></a>
|
||||
</span><span id="parse-91"><a href="#parse-91"><span class="linenos"> 91</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="parse-92"><a href="#parse-92"><span class="linenos"> 92</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="parse-93"><a href="#parse-93"><span class="linenos"> 93</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="parse-94"><a href="#parse-94"><span class="linenos"> 94</span></a><span class="sd"> dialect: the SQL dialect (alias for read).</span>
|
||||
</span><span id="parse-95"><a href="#parse-95"><span class="linenos"> 95</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span>
|
||||
</span><span id="parse-96"><a href="#parse-96"><span class="linenos"> 96</span></a>
|
||||
</span><span id="parse-97"><a href="#parse-97"><span class="linenos"> 97</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="parse-98"><a href="#parse-98"><span class="linenos"> 98</span></a><span class="sd"> The resulting syntax tree collection.</span>
|
||||
</span><span id="parse-99"><a href="#parse-99"><span class="linenos"> 99</span></a><span class="sd"> """</span>
|
||||
</span><span id="parse-100"><a href="#parse-100"><span class="linenos">100</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">read</span> <span class="ow">or</span> <span class="n">dialect</span><span class="p">)</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>
|
||||
|
||||
|
||||
|
@ -1071,40 +1051,40 @@ make check # Full test suite & linter checks
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#parse_one"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse_one-114"><a href="#parse_one-114"><span class="linenos">114</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span>
|
||||
</span><span id="parse_one-115"><a href="#parse_one-115"><span class="linenos">115</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-116"><a href="#parse_one-116"><span class="linenos">116</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-117"><a href="#parse_one-117"><span class="linenos">117</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="parse_one-118"><a href="#parse_one-118"><span class="linenos">118</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-119"><a href="#parse_one-119"><span class="linenos">119</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="parse_one-120"><a href="#parse_one-120"><span class="linenos">120</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="parse_one-121"><a href="#parse_one-121"><span class="linenos">121</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="parse_one-122"><a href="#parse_one-122"><span class="linenos">122</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-123"><a href="#parse_one-123"><span class="linenos">123</span></a>
|
||||
</span><span id="parse_one-124"><a href="#parse_one-124"><span class="linenos">124</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="parse_one-125"><a href="#parse_one-125"><span class="linenos">125</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="parse_one-126"><a href="#parse_one-126"><span class="linenos">126</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="parse_one-127"><a href="#parse_one-127"><span class="linenos">127</span></a><span class="sd"> dialect: the SQL dialect (alias for read)</span>
|
||||
</span><span id="parse_one-128"><a href="#parse_one-128"><span class="linenos">128</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span>
|
||||
</span><span id="parse_one-129"><a href="#parse_one-129"><span class="linenos">129</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span>
|
||||
</span><span id="parse_one-130"><a href="#parse_one-130"><span class="linenos">130</span></a>
|
||||
</span><span id="parse_one-131"><a href="#parse_one-131"><span class="linenos">131</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="parse_one-132"><a href="#parse_one-132"><span class="linenos">132</span></a><span class="sd"> The syntax tree for the first parsed statement.</span>
|
||||
</span><span id="parse_one-133"><a href="#parse_one-133"><span class="linenos">133</span></a><span class="sd"> """</span>
|
||||
</span><span id="parse_one-134"><a href="#parse_one-134"><span class="linenos">134</span></a>
|
||||
</span><span id="parse_one-135"><a href="#parse_one-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="ow">or</span> <span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="parse_one-136"><a href="#parse_one-136"><span class="linenos">136</span></a>
|
||||
</span><span id="parse_one-137"><a href="#parse_one-137"><span class="linenos">137</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span>
|
||||
</span><span id="parse_one-138"><a href="#parse_one-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="parse_one-139"><a href="#parse_one-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse_one-140"><a href="#parse_one-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="parse_one-141"><a href="#parse_one-141"><span class="linenos">141</span></a>
|
||||
</span><span id="parse_one-142"><a href="#parse_one-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="parse_one-143"><a href="#parse_one-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="parse_one-144"><a href="#parse_one-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="parse_one-145"><a href="#parse_one-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="parse_one-146"><a href="#parse_one-146"><span class="linenos">146</span></a> <span class="k">else</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">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>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse_one-111"><a href="#parse_one-111"><span class="linenos">111</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span>
|
||||
</span><span id="parse_one-112"><a href="#parse_one-112"><span class="linenos">112</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-113"><a href="#parse_one-113"><span class="linenos">113</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-114"><a href="#parse_one-114"><span class="linenos">114</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="parse_one-115"><a href="#parse_one-115"><span class="linenos">115</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-116"><a href="#parse_one-116"><span class="linenos">116</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="parse_one-117"><a href="#parse_one-117"><span class="linenos">117</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="parse_one-118"><a href="#parse_one-118"><span class="linenos">118</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="parse_one-119"><a href="#parse_one-119"><span class="linenos">119</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-120"><a href="#parse_one-120"><span class="linenos">120</span></a>
|
||||
</span><span id="parse_one-121"><a href="#parse_one-121"><span class="linenos">121</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="parse_one-122"><a href="#parse_one-122"><span class="linenos">122</span></a><span class="sd"> sql: the SQL code string to parse.</span>
|
||||
</span><span id="parse_one-123"><a href="#parse_one-123"><span class="linenos">123</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span>
|
||||
</span><span id="parse_one-124"><a href="#parse_one-124"><span class="linenos">124</span></a><span class="sd"> dialect: the SQL dialect (alias for read)</span>
|
||||
</span><span id="parse_one-125"><a href="#parse_one-125"><span class="linenos">125</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span>
|
||||
</span><span id="parse_one-126"><a href="#parse_one-126"><span class="linenos">126</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span>
|
||||
</span><span id="parse_one-127"><a href="#parse_one-127"><span class="linenos">127</span></a>
|
||||
</span><span id="parse_one-128"><a href="#parse_one-128"><span class="linenos">128</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="parse_one-129"><a href="#parse_one-129"><span class="linenos">129</span></a><span class="sd"> The syntax tree for the first parsed statement.</span>
|
||||
</span><span id="parse_one-130"><a href="#parse_one-130"><span class="linenos">130</span></a><span class="sd"> """</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="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="ow">or</span> <span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="parse_one-133"><a href="#parse_one-133"><span class="linenos">133</span></a>
|
||||
</span><span id="parse_one-134"><a href="#parse_one-134"><span class="linenos">134</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span>
|
||||
</span><span id="parse_one-135"><a href="#parse_one-135"><span class="linenos">135</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-136"><a href="#parse_one-136"><span class="linenos">136</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="parse_one-137"><a href="#parse_one-137"><span class="linenos">137</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-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="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-140"><a href="#parse_one-140"><span class="linenos">140</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-141"><a href="#parse_one-141"><span class="linenos">141</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-142"><a href="#parse_one-142"><span class="linenos">142</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="k">else</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">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>
|
||||
|
||||
|
||||
|
@ -1140,36 +1120,36 @@ make check # Full test suite & linter checks
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#transpile"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="transpile-150"><a href="#transpile-150"><span class="linenos">150</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span>
|
||||
</span><span id="transpile-151"><a href="#transpile-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="transpile-152"><a href="#transpile-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="transpile-153"><a href="#transpile-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="transpile-154"><a href="#transpile-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="transpile-155"><a href="#transpile-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="transpile-156"><a href="#transpile-156"><span class="linenos">156</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="transpile-157"><a href="#transpile-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="transpile-158"><a href="#transpile-158"><span class="linenos">158</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="transpile-159"><a href="#transpile-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="transpile-160"><a href="#transpile-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="transpile-161"><a href="#transpile-161"><span class="linenos">161</span></a>
|
||||
</span><span id="transpile-162"><a href="#transpile-162"><span class="linenos">162</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="transpile-163"><a href="#transpile-163"><span class="linenos">163</span></a><span class="sd"> sql: the SQL code string to transpile.</span>
|
||||
</span><span id="transpile-164"><a href="#transpile-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="transpile-165"><a href="#transpile-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="transpile-166"><a href="#transpile-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="transpile-167"><a href="#transpile-167"><span class="linenos">167</span></a><span class="sd"> the source and the target dialect.</span>
|
||||
</span><span id="transpile-168"><a href="#transpile-168"><span class="linenos">168</span></a><span class="sd"> error_level: the desired error level of the parser.</span>
|
||||
</span><span id="transpile-169"><a href="#transpile-169"><span class="linenos">169</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span>
|
||||
</span><span id="transpile-170"><a href="#transpile-170"><span class="linenos">170</span></a>
|
||||
</span><span id="transpile-171"><a href="#transpile-171"><span class="linenos">171</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="transpile-172"><a href="#transpile-172"><span class="linenos">172</span></a><span class="sd"> The list of transpiled SQL statements.</span>
|
||||
</span><span id="transpile-173"><a href="#transpile-173"><span class="linenos">173</span></a><span class="sd"> """</span>
|
||||
</span><span id="transpile-174"><a href="#transpile-174"><span class="linenos">174</span></a> <span class="n">write</span> <span class="o">=</span> <span class="p">(</span><span class="n">read</span> <span class="k">if</span> <span class="n">write</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">write</span><span class="p">)</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-175"><a href="#transpile-175"><span class="linenos">175</span></a> <span class="n">write</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">write</span><span class="p">)</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">write</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="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 class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</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-147"><a href="#transpile-147"><span class="linenos">147</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span>
|
||||
</span><span id="transpile-148"><a href="#transpile-148"><span class="linenos">148</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
|
||||
</span><span id="transpile-149"><a href="#transpile-149"><span class="linenos">149</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-150"><a href="#transpile-150"><span class="linenos">150</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-151"><a href="#transpile-151"><span class="linenos">151</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-152"><a href="#transpile-152"><span class="linenos">152</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-153"><a href="#transpile-153"><span class="linenos">153</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="transpile-154"><a href="#transpile-154"><span class="linenos">154</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-155"><a href="#transpile-155"><span class="linenos">155</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="transpile-156"><a href="#transpile-156"><span class="linenos">156</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-157"><a href="#transpile-157"><span class="linenos">157</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-158"><a href="#transpile-158"><span class="linenos">158</span></a>
|
||||
</span><span id="transpile-159"><a href="#transpile-159"><span class="linenos">159</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="transpile-160"><a href="#transpile-160"><span class="linenos">160</span></a><span class="sd"> sql: the SQL code string to transpile.</span>
|
||||
</span><span id="transpile-161"><a href="#transpile-161"><span class="linenos">161</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-162"><a href="#transpile-162"><span class="linenos">162</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-163"><a href="#transpile-163"><span class="linenos">163</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-164"><a href="#transpile-164"><span class="linenos">164</span></a><span class="sd"> the source and the target dialect.</span>
|
||||
</span><span id="transpile-165"><a href="#transpile-165"><span class="linenos">165</span></a><span class="sd"> error_level: the desired error level of the parser.</span>
|
||||
</span><span id="transpile-166"><a href="#transpile-166"><span class="linenos">166</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span>
|
||||
</span><span id="transpile-167"><a href="#transpile-167"><span class="linenos">167</span></a>
|
||||
</span><span id="transpile-168"><a href="#transpile-168"><span class="linenos">168</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="transpile-169"><a href="#transpile-169"><span class="linenos">169</span></a><span class="sd"> The list of transpiled SQL statements.</span>
|
||||
</span><span id="transpile-170"><a href="#transpile-170"><span class="linenos">170</span></a><span class="sd"> """</span>
|
||||
</span><span id="transpile-171"><a href="#transpile-171"><span class="linenos">171</span></a> <span class="n">write</span> <span class="o">=</span> <span class="p">(</span><span class="n">read</span> <span class="k">if</span> <span class="n">write</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">write</span><span class="p">)</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-172"><a href="#transpile-172"><span class="linenos">172</span></a> <span class="n">write</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">write</span><span class="p">)</span>
|
||||
</span><span id="transpile-173"><a href="#transpile-173"><span class="linenos">173</span></a> <span class="k">return</span> <span class="p">[</span>
|
||||
</span><span id="transpile-174"><a href="#transpile-174"><span class="linenos">174</span></a> <span class="n">write</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="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 class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="transpile-175"><a href="#transpile-175"><span class="linenos">175</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-176"><a href="#transpile-176"><span class="linenos">176</span></a> <span class="p">]</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -76,8 +76,8 @@
|
|||
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'24.0.3'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">24</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'25.0.2'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">25</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -97,7 +97,7 @@
|
|||
<section id="version">
|
||||
<div class="attr variable">
|
||||
<span class="name">version</span><span class="annotation">: str</span> =
|
||||
<span class="default_value">'24.0.3'</span>
|
||||
<span class="default_value">'25.0.2'</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<section id="version_tuple">
|
||||
<div class="attr variable">
|
||||
<span class="name">version_tuple</span><span class="annotation">: object</span> =
|
||||
<span class="default_value">(24, 0, 3)</span>
|
||||
<span class="default_value">(25, 0, 2)</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1311,6 +1311,9 @@
|
|||
<li>
|
||||
<a class="function" href="#Generator.maskingpolicycolumnconstraint_sql">maskingpolicycolumnconstraint_sql</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#Generator.gapfill_sql">gapfill_sql</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
@ -5199,93 +5202,106 @@
|
|||
</span><span id="L-3860"><a href="#L-3860"><span class="linenos">3860</span></a> <span class="k">def</span> <span class="nf">copyparameter_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-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">if</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span>
|
||||
</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> <span class="n">values</span> <span 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">"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 class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span>
|
||||
</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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-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">value</span> <span class="o">=</span> <span class="bp">self</span><span 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-3863"><a href="#L-3863"><span class="linenos">3863</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</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 class="n">upper</span> <span class="o">=</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a>
|
||||
</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> <span class="c1"># Snowflake FILE_FORMAT options are separated by whitespace</span>
|
||||
</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span> <span class="k">else</span> <span class="s2">", "</span>
|
||||
</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a>
|
||||
</span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a>
|
||||
</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> <span class="c1"># Databricks copy/format options do not set their list of values with EQ</span>
|
||||
</span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" = "</span>
|
||||
</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a> <span class="n">values</span> <span 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 class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">)</span>
|
||||
</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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">values</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a>
|
||||
</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span 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-3875"><a href="#L-3875"><span class="linenos">3875</span></a>
|
||||
</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="n">credentials</span> <span 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">"credentials"</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-3885"><a href="#L-3885"><span class="linenos">3885</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</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="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="L-3888"><a href="#L-3888"><span class="linenos">3888</span></a>
|
||||
</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a> <span class="n">encryption</span> <span 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">"encryption"</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-3890"><a href="#L-3890"><span class="linenos">3890</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a>
|
||||
</span><span id="L-3892"><a href="#L-3892"><span class="linenos">3892</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</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="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a>
|
||||
</span><span id="L-3898"><a href="#L-3898"><span class="linenos">3898</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a>
|
||||
</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</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">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a>
|
||||
</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3885"><a href="#L-3885"><span class="linenos">3885</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="L-3886"><a href="#L-3886"><span class="linenos">3886</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="L-3887"><a href="#L-3887"><span class="linenos">3887</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3888"><a href="#L-3888"><span class="linenos">3888</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-3890"><a href="#L-3890"><span class="linenos">3890</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a> <span class="n">credentials</span> <span 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">"credentials"</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-3892"><a href="#L-3892"><span class="linenos">3892</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">cred_expr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a>
|
||||
</span><span id="L-3894"><a href="#L-3894"><span class="linenos">3894</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="L-3895"><a href="#L-3895"><span class="linenos">3895</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a>
|
||||
</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a> <span class="n">encryption</span> <span 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">"encryption"</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-3898"><a href="#L-3898"><span class="linenos">3898</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3899"><a href="#L-3899"><span class="linenos">3899</span></a>
|
||||
</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3902"><a href="#L-3902"><span class="linenos">3902</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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-3903"><a href="#L-3903"><span class="linenos">3903</span></a>
|
||||
</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a> <span class="n">files</span> <span 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">"files"</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-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="n">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="L-3910"><a href="#L-3910"><span class="linenos">3910</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="L-3911"><a href="#L-3911"><span class="linenos">3911</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="L-3912"><a href="#L-3912"><span class="linenos">3912</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3916"><a href="#L-3916"><span class="linenos">3916</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3917"><a href="#L-3917"><span class="linenos">3917</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a> <span class="p">)</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="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a> <span class="k">elif</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-3924"><a href="#L-3924"><span class="linenos">3924</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a>
|
||||
</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</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="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a>
|
||||
</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a>
|
||||
</span><span id="L-3908"><a href="#L-3908"><span class="linenos">3908</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3909"><a href="#L-3909"><span class="linenos">3909</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3910"><a href="#L-3910"><span class="linenos">3910</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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-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="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> <span class="n">files</span> <span 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">"files"</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-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">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="L-3919"><a href="#L-3919"><span class="linenos">3919</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="L-3920"><a href="#L-3920"><span class="linenos">3920</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3924"><a href="#L-3924"><span class="linenos">3924</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a> <span class="p">)</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 class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a>
|
||||
</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="k">def</span> <span class="nf">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="L-3933"><a href="#L-3933"><span class="linenos">3933</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="L-3934"><a href="#L-3934"><span class="linenos">3934</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-3935"><a href="#L-3935"><span class="linenos">3935</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="L-3936"><a href="#L-3936"><span class="linenos">3936</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</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 class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="L-3939"><a href="#L-3939"><span class="linenos">3939</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</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="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3942"><a href="#L-3942"><span class="linenos">3942</span></a>
|
||||
</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="L-3944"><a href="#L-3944"><span class="linenos">3944</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3946"><a href="#L-3946"><span class="linenos">3946</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3947"><a href="#L-3947"><span class="linenos">3947</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-3948"><a href="#L-3948"><span class="linenos">3948</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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-3949"><a href="#L-3949"><span class="linenos">3949</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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-3928"><a href="#L-3928"><span class="linenos">3928</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="k">elif</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-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</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="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</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 class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3937"><a href="#L-3937"><span class="linenos">3937</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
</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">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3940"><a href="#L-3940"><span class="linenos">3940</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="L-3941"><a href="#L-3941"><span class="linenos">3941</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="L-3942"><a href="#L-3942"><span class="linenos">3942</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="L-3944"><a href="#L-3944"><span class="linenos">3944</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a>
|
||||
</span><span id="L-3946"><a href="#L-3946"><span class="linenos">3946</span></a> <span class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="L-3947"><a href="#L-3947"><span class="linenos">3947</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</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="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3950"><a href="#L-3950"><span class="linenos">3950</span></a>
|
||||
</span><span id="L-3951"><a href="#L-3951"><span class="linenos">3951</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="L-3952"><a href="#L-3952"><span class="linenos">3952</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="L-3953"><a href="#L-3953"><span class="linenos">3953</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3954"><a href="#L-3954"><span class="linenos">3954</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3955"><a href="#L-3955"><span class="linenos">3955</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-3956"><a href="#L-3956"><span class="linenos">3956</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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-3957"><a href="#L-3957"><span class="linenos">3957</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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-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">def</span> <span class="nf">gapfill_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-3960"><a href="#L-3960"><span class="linenos">3960</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3961"><a href="#L-3961"><span class="linenos">3961</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-3962"><a href="#L-3962"><span class="linenos">3962</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">"GAP_FILL"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="o">*</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">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 class="k">if</span> <span class="n">k</span> <span class="o">!=</span> <span class="s2">"this"</span><span class="p">])</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -9152,93 +9168,106 @@
|
|||
</span><span id="Generator-3861"><a href="#Generator-3861"><span class="linenos">3861</span></a> <span class="k">def</span> <span class="nf">copyparameter_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3862"><a href="#Generator-3862"><span class="linenos">3862</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3863"><a href="#Generator-3863"><span class="linenos">3863</span></a>
|
||||
</span><span id="Generator-3864"><a href="#Generator-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span>
|
||||
</span><span id="Generator-3865"><a href="#Generator-3865"><span class="linenos">3865</span></a> <span class="n">values</span> <span 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">"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 class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span>
|
||||
</span><span id="Generator-3866"><a href="#Generator-3866"><span class="linenos">3866</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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="Generator-3867"><a href="#Generator-3867"><span class="linenos">3867</span></a>
|
||||
</span><span id="Generator-3868"><a href="#Generator-3868"><span class="linenos">3868</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span 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-3864"><a href="#Generator-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
|
||||
</span><span id="Generator-3865"><a href="#Generator-3865"><span class="linenos">3865</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
</span><span id="Generator-3866"><a href="#Generator-3866"><span class="linenos">3866</span></a>
|
||||
</span><span id="Generator-3867"><a href="#Generator-3867"><span class="linenos">3867</span></a> <span class="c1"># Snowflake FILE_FORMAT options are separated by whitespace</span>
|
||||
</span><span id="Generator-3868"><a href="#Generator-3868"><span class="linenos">3868</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span> <span class="k">else</span> <span class="s2">", "</span>
|
||||
</span><span id="Generator-3869"><a href="#Generator-3869"><span class="linenos">3869</span></a>
|
||||
</span><span id="Generator-3870"><a href="#Generator-3870"><span class="linenos">3870</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="Generator-3871"><a href="#Generator-3871"><span class="linenos">3871</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="Generator-3872"><a href="#Generator-3872"><span class="linenos">3872</span></a>
|
||||
</span><span id="Generator-3873"><a href="#Generator-3873"><span class="linenos">3873</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator-3870"><a href="#Generator-3870"><span class="linenos">3870</span></a> <span class="c1"># Databricks copy/format options do not set their list of values with EQ</span>
|
||||
</span><span id="Generator-3871"><a href="#Generator-3871"><span class="linenos">3871</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" = "</span>
|
||||
</span><span id="Generator-3872"><a href="#Generator-3872"><span class="linenos">3872</span></a> <span class="n">values</span> <span 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 class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">)</span>
|
||||
</span><span id="Generator-3873"><a href="#Generator-3873"><span class="linenos">3873</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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">values</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator-3874"><a href="#Generator-3874"><span class="linenos">3874</span></a>
|
||||
</span><span id="Generator-3875"><a href="#Generator-3875"><span class="linenos">3875</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3875"><a href="#Generator-3875"><span class="linenos">3875</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span 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-3876"><a href="#Generator-3876"><span class="linenos">3876</span></a>
|
||||
</span><span id="Generator-3877"><a href="#Generator-3877"><span class="linenos">3877</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3878"><a href="#Generator-3878"><span class="linenos">3878</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3879"><a href="#Generator-3879"><span class="linenos">3879</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="Generator-3880"><a href="#Generator-3880"><span class="linenos">3880</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="Generator-3881"><a href="#Generator-3881"><span class="linenos">3881</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3882"><a href="#Generator-3882"><span class="linenos">3882</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3883"><a href="#Generator-3883"><span class="linenos">3883</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Generator-3884"><a href="#Generator-3884"><span class="linenos">3884</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="Generator-3885"><a href="#Generator-3885"><span class="linenos">3885</span></a> <span class="n">credentials</span> <span 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">"credentials"</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-3886"><a href="#Generator-3886"><span class="linenos">3886</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3887"><a href="#Generator-3887"><span class="linenos">3887</span></a>
|
||||
</span><span id="Generator-3888"><a href="#Generator-3888"><span class="linenos">3888</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3889"><a href="#Generator-3889"><span class="linenos">3889</span></a>
|
||||
</span><span id="Generator-3890"><a href="#Generator-3890"><span class="linenos">3890</span></a> <span class="n">encryption</span> <span 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">"encryption"</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-3891"><a href="#Generator-3891"><span class="linenos">3891</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3892"><a href="#Generator-3892"><span class="linenos">3892</span></a>
|
||||
</span><span id="Generator-3893"><a href="#Generator-3893"><span class="linenos">3893</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3894"><a href="#Generator-3894"><span class="linenos">3894</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3895"><a href="#Generator-3895"><span class="linenos">3895</span></a>
|
||||
</span><span id="Generator-3896"><a href="#Generator-3896"><span class="linenos">3896</span></a> <span class="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3897"><a href="#Generator-3897"><span class="linenos">3897</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3898"><a href="#Generator-3898"><span class="linenos">3898</span></a>
|
||||
</span><span id="Generator-3899"><a href="#Generator-3899"><span class="linenos">3899</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3877"><a href="#Generator-3877"><span class="linenos">3877</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="Generator-3878"><a href="#Generator-3878"><span class="linenos">3878</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="Generator-3879"><a href="#Generator-3879"><span class="linenos">3879</span></a>
|
||||
</span><span id="Generator-3880"><a href="#Generator-3880"><span class="linenos">3880</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator-3881"><a href="#Generator-3881"><span class="linenos">3881</span></a>
|
||||
</span><span id="Generator-3882"><a href="#Generator-3882"><span class="linenos">3882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3883"><a href="#Generator-3883"><span class="linenos">3883</span></a>
|
||||
</span><span id="Generator-3884"><a href="#Generator-3884"><span class="linenos">3884</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3885"><a href="#Generator-3885"><span class="linenos">3885</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3886"><a href="#Generator-3886"><span class="linenos">3886</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="Generator-3887"><a href="#Generator-3887"><span class="linenos">3887</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="Generator-3888"><a href="#Generator-3888"><span class="linenos">3888</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3889"><a href="#Generator-3889"><span class="linenos">3889</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3890"><a href="#Generator-3890"><span class="linenos">3890</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Generator-3891"><a href="#Generator-3891"><span class="linenos">3891</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="Generator-3892"><a href="#Generator-3892"><span class="linenos">3892</span></a> <span class="n">credentials</span> <span 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">"credentials"</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-3893"><a href="#Generator-3893"><span class="linenos">3893</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">cred_expr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3894"><a href="#Generator-3894"><span class="linenos">3894</span></a>
|
||||
</span><span id="Generator-3895"><a href="#Generator-3895"><span class="linenos">3895</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3896"><a href="#Generator-3896"><span class="linenos">3896</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3897"><a href="#Generator-3897"><span class="linenos">3897</span></a>
|
||||
</span><span id="Generator-3898"><a href="#Generator-3898"><span class="linenos">3898</span></a> <span class="n">encryption</span> <span 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">"encryption"</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-3899"><a href="#Generator-3899"><span class="linenos">3899</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3900"><a href="#Generator-3900"><span class="linenos">3900</span></a>
|
||||
</span><span id="Generator-3901"><a href="#Generator-3901"><span class="linenos">3901</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3902"><a href="#Generator-3902"><span class="linenos">3902</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3903"><a href="#Generator-3903"><span class="linenos">3903</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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-3904"><a href="#Generator-3904"><span class="linenos">3904</span></a>
|
||||
</span><span id="Generator-3905"><a href="#Generator-3905"><span class="linenos">3905</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3906"><a href="#Generator-3906"><span class="linenos">3906</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3907"><a href="#Generator-3907"><span class="linenos">3907</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3908"><a href="#Generator-3908"><span class="linenos">3908</span></a> <span class="n">files</span> <span 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">"files"</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-3909"><a href="#Generator-3909"><span class="linenos">3909</span></a>
|
||||
</span><span id="Generator-3910"><a href="#Generator-3910"><span class="linenos">3910</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator-3911"><a href="#Generator-3911"><span class="linenos">3911</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="Generator-3912"><a href="#Generator-3912"><span class="linenos">3912</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Generator-3913"><a href="#Generator-3913"><span class="linenos">3913</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="Generator-3914"><a href="#Generator-3914"><span class="linenos">3914</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="Generator-3915"><a href="#Generator-3915"><span class="linenos">3915</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3916"><a href="#Generator-3916"><span class="linenos">3916</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3917"><a href="#Generator-3917"><span class="linenos">3917</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3918"><a href="#Generator-3918"><span class="linenos">3918</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="Generator-3919"><a href="#Generator-3919"><span class="linenos">3919</span></a> <span class="p">)</span>
|
||||
</span><span id="Generator-3920"><a href="#Generator-3920"><span class="linenos">3920</span></a>
|
||||
</span><span id="Generator-3921"><a href="#Generator-3921"><span class="linenos">3921</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="Generator-3922"><a href="#Generator-3922"><span class="linenos">3922</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="Generator-3923"><a href="#Generator-3923"><span class="linenos">3923</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator-3924"><a href="#Generator-3924"><span class="linenos">3924</span></a> <span class="k">elif</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-3925"><a href="#Generator-3925"><span class="linenos">3925</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3926"><a href="#Generator-3926"><span class="linenos">3926</span></a>
|
||||
</span><span id="Generator-3927"><a href="#Generator-3927"><span class="linenos">3927</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3901"><a href="#Generator-3901"><span class="linenos">3901</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3902"><a href="#Generator-3902"><span class="linenos">3902</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3903"><a href="#Generator-3903"><span class="linenos">3903</span></a>
|
||||
</span><span id="Generator-3904"><a href="#Generator-3904"><span class="linenos">3904</span></a> <span class="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3905"><a href="#Generator-3905"><span class="linenos">3905</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3906"><a href="#Generator-3906"><span class="linenos">3906</span></a>
|
||||
</span><span id="Generator-3907"><a href="#Generator-3907"><span class="linenos">3907</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3908"><a href="#Generator-3908"><span class="linenos">3908</span></a>
|
||||
</span><span id="Generator-3909"><a href="#Generator-3909"><span class="linenos">3909</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3910"><a href="#Generator-3910"><span class="linenos">3910</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3911"><a href="#Generator-3911"><span class="linenos">3911</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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-3912"><a href="#Generator-3912"><span class="linenos">3912</span></a>
|
||||
</span><span id="Generator-3913"><a href="#Generator-3913"><span class="linenos">3913</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3914"><a href="#Generator-3914"><span class="linenos">3914</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3915"><a href="#Generator-3915"><span class="linenos">3915</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3916"><a href="#Generator-3916"><span class="linenos">3916</span></a> <span class="n">files</span> <span 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">"files"</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-3917"><a href="#Generator-3917"><span class="linenos">3917</span></a>
|
||||
</span><span id="Generator-3918"><a href="#Generator-3918"><span class="linenos">3918</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator-3919"><a href="#Generator-3919"><span class="linenos">3919</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="Generator-3920"><a href="#Generator-3920"><span class="linenos">3920</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Generator-3921"><a href="#Generator-3921"><span class="linenos">3921</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="Generator-3922"><a href="#Generator-3922"><span class="linenos">3922</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="Generator-3923"><a href="#Generator-3923"><span class="linenos">3923</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3924"><a href="#Generator-3924"><span class="linenos">3924</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3925"><a href="#Generator-3925"><span class="linenos">3925</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator-3926"><a href="#Generator-3926"><span class="linenos">3926</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="Generator-3927"><a href="#Generator-3927"><span class="linenos">3927</span></a> <span class="p">)</span>
|
||||
</span><span id="Generator-3928"><a href="#Generator-3928"><span class="linenos">3928</span></a>
|
||||
</span><span id="Generator-3929"><a href="#Generator-3929"><span class="linenos">3929</span></a> <span class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3930"><a href="#Generator-3930"><span class="linenos">3930</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3931"><a href="#Generator-3931"><span class="linenos">3931</span></a>
|
||||
</span><span id="Generator-3932"><a href="#Generator-3932"><span class="linenos">3932</span></a> <span class="k">def</span> <span class="nf">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3933"><a href="#Generator-3933"><span class="linenos">3933</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="Generator-3934"><a href="#Generator-3934"><span class="linenos">3934</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3935"><a href="#Generator-3935"><span class="linenos">3935</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator-3936"><a href="#Generator-3936"><span class="linenos">3936</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3937"><a href="#Generator-3937"><span class="linenos">3937</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator-3938"><a href="#Generator-3938"><span class="linenos">3938</span></a>
|
||||
</span><span id="Generator-3939"><a href="#Generator-3939"><span class="linenos">3939</span></a> <span class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="Generator-3940"><a href="#Generator-3940"><span class="linenos">3940</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</span>
|
||||
</span><span id="Generator-3941"><a href="#Generator-3941"><span class="linenos">3941</span></a>
|
||||
</span><span id="Generator-3942"><a href="#Generator-3942"><span class="linenos">3942</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3943"><a href="#Generator-3943"><span class="linenos">3943</span></a>
|
||||
</span><span id="Generator-3944"><a href="#Generator-3944"><span class="linenos">3944</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="Generator-3945"><a href="#Generator-3945"><span class="linenos">3945</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="Generator-3946"><a href="#Generator-3946"><span class="linenos">3946</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3947"><a href="#Generator-3947"><span class="linenos">3947</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3948"><a href="#Generator-3948"><span class="linenos">3948</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-3949"><a href="#Generator-3949"><span class="linenos">3949</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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-3950"><a href="#Generator-3950"><span class="linenos">3950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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-3929"><a href="#Generator-3929"><span class="linenos">3929</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="Generator-3930"><a href="#Generator-3930"><span class="linenos">3930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="Generator-3931"><a href="#Generator-3931"><span class="linenos">3931</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator-3932"><a href="#Generator-3932"><span class="linenos">3932</span></a> <span class="k">elif</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-3933"><a href="#Generator-3933"><span class="linenos">3933</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3934"><a href="#Generator-3934"><span class="linenos">3934</span></a>
|
||||
</span><span id="Generator-3935"><a href="#Generator-3935"><span class="linenos">3935</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3936"><a href="#Generator-3936"><span class="linenos">3936</span></a>
|
||||
</span><span id="Generator-3937"><a href="#Generator-3937"><span class="linenos">3937</span></a> <span class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3938"><a href="#Generator-3938"><span class="linenos">3938</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
</span><span id="Generator-3939"><a href="#Generator-3939"><span class="linenos">3939</span></a>
|
||||
</span><span id="Generator-3940"><a href="#Generator-3940"><span class="linenos">3940</span></a> <span class="k">def</span> <span class="nf">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3941"><a href="#Generator-3941"><span class="linenos">3941</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="Generator-3942"><a href="#Generator-3942"><span class="linenos">3942</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3943"><a href="#Generator-3943"><span class="linenos">3943</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator-3944"><a href="#Generator-3944"><span class="linenos">3944</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="Generator-3945"><a href="#Generator-3945"><span class="linenos">3945</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator-3946"><a href="#Generator-3946"><span class="linenos">3946</span></a>
|
||||
</span><span id="Generator-3947"><a href="#Generator-3947"><span class="linenos">3947</span></a> <span class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="Generator-3948"><a href="#Generator-3948"><span class="linenos">3948</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</span>
|
||||
</span><span id="Generator-3949"><a href="#Generator-3949"><span class="linenos">3949</span></a>
|
||||
</span><span id="Generator-3950"><a href="#Generator-3950"><span class="linenos">3950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3951"><a href="#Generator-3951"><span class="linenos">3951</span></a>
|
||||
</span><span id="Generator-3952"><a href="#Generator-3952"><span class="linenos">3952</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="Generator-3953"><a href="#Generator-3953"><span class="linenos">3953</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="Generator-3954"><a href="#Generator-3954"><span class="linenos">3954</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3955"><a href="#Generator-3955"><span class="linenos">3955</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3956"><a href="#Generator-3956"><span class="linenos">3956</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-3957"><a href="#Generator-3957"><span class="linenos">3957</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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-3958"><a href="#Generator-3958"><span class="linenos">3958</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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-3959"><a href="#Generator-3959"><span class="linenos">3959</span></a>
|
||||
</span><span id="Generator-3960"><a href="#Generator-3960"><span class="linenos">3960</span></a> <span class="k">def</span> <span class="nf">gapfill_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator-3961"><a href="#Generator-3961"><span class="linenos">3961</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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-3962"><a href="#Generator-3962"><span class="linenos">3962</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator-3963"><a href="#Generator-3963"><span class="linenos">3963</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">"GAP_FILL"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="o">*</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">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 class="k">if</span> <span class="n">k</span> <span class="o">!=</span> <span class="s2">"this"</span><span class="p">])</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -10044,7 +10073,7 @@ Default: True</li>
|
|||
<div class="attr variable">
|
||||
<span class="name">SUPPORTED_JSON_PATH_PARTS</span> =
|
||||
<input id="Generator.SUPPORTED_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>}</span>
|
||||
<label class="view-value-button pdoc-button" for="Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -10326,7 +10355,7 @@ Default: True</li>
|
|||
<div id="Generator.PARAMETERIZABLE_TEXT_TYPES" class="classattr">
|
||||
<div class="attr variable">
|
||||
<span class="name">PARAMETERIZABLE_TEXT_TYPES</span> =
|
||||
<span class="default_value">{<Type.CHAR: 'CHAR'>, <Type.VARCHAR: 'VARCHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.NCHAR: 'NCHAR'>}</span>
|
||||
<span class="default_value">{<Type.CHAR: 'CHAR'>, <Type.NVARCHAR: 'NVARCHAR'>, <Type.VARCHAR: 'VARCHAR'>, <Type.NCHAR: 'NCHAR'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -18858,18 +18887,25 @@ it is safer to copy.</li>
|
|||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.copyparameter_sql-3861"><a href="#Generator.copyparameter_sql-3861"><span class="linenos">3861</span></a> <span class="k">def</span> <span class="nf">copyparameter_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CopyParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.copyparameter_sql-3862"><a href="#Generator.copyparameter_sql-3862"><span class="linenos">3862</span></a> <span class="n">option</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.copyparameter_sql-3863"><a href="#Generator.copyparameter_sql-3863"><span class="linenos">3863</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3864"><a href="#Generator.copyparameter_sql-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span><span class="p">:</span>
|
||||
</span><span id="Generator.copyparameter_sql-3865"><a href="#Generator.copyparameter_sql-3865"><span class="linenos">3865</span></a> <span class="n">values</span> <span 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">"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 class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span>
|
||||
</span><span id="Generator.copyparameter_sql-3866"><a href="#Generator.copyparameter_sql-3866"><span class="linenos">3866</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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="Generator.copyparameter_sql-3867"><a href="#Generator.copyparameter_sql-3867"><span class="linenos">3867</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3868"><a href="#Generator.copyparameter_sql-3868"><span class="linenos">3868</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span 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.copyparameter_sql-3864"><a href="#Generator.copyparameter_sql-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
|
||||
</span><span id="Generator.copyparameter_sql-3865"><a href="#Generator.copyparameter_sql-3865"><span class="linenos">3865</span></a> <span class="n">upper</span> <span class="o">=</span> <span class="n">option</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
</span><span id="Generator.copyparameter_sql-3866"><a href="#Generator.copyparameter_sql-3866"><span class="linenos">3866</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3867"><a href="#Generator.copyparameter_sql-3867"><span class="linenos">3867</span></a> <span class="c1"># Snowflake FILE_FORMAT options are separated by whitespace</span>
|
||||
</span><span id="Generator.copyparameter_sql-3868"><a href="#Generator.copyparameter_sql-3868"><span class="linenos">3868</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">"FILE_FORMAT"</span> <span class="k">else</span> <span class="s2">", "</span>
|
||||
</span><span id="Generator.copyparameter_sql-3869"><a href="#Generator.copyparameter_sql-3869"><span class="linenos">3869</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3870"><a href="#Generator.copyparameter_sql-3870"><span class="linenos">3870</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="Generator.copyparameter_sql-3871"><a href="#Generator.copyparameter_sql-3871"><span class="linenos">3871</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="Generator.copyparameter_sql-3872"><a href="#Generator.copyparameter_sql-3872"><span class="linenos">3872</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3873"><a href="#Generator.copyparameter_sql-3873"><span class="linenos">3873</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator.copyparameter_sql-3870"><a href="#Generator.copyparameter_sql-3870"><span class="linenos">3870</span></a> <span class="c1"># Databricks copy/format options do not set their list of values with EQ</span>
|
||||
</span><span id="Generator.copyparameter_sql-3871"><a href="#Generator.copyparameter_sql-3871"><span class="linenos">3871</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"COPY_OPTIONS"</span><span class="p">,</span> <span class="s2">"FORMAT_OPTIONS"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" = "</span>
|
||||
</span><span id="Generator.copyparameter_sql-3872"><a href="#Generator.copyparameter_sql-3872"><span class="linenos">3872</span></a> <span class="n">values</span> <span 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 class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">)</span>
|
||||
</span><span id="Generator.copyparameter_sql-3873"><a href="#Generator.copyparameter_sql-3873"><span class="linenos">3873</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</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">values</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator.copyparameter_sql-3874"><a href="#Generator.copyparameter_sql-3874"><span class="linenos">3874</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3875"><a href="#Generator.copyparameter_sql-3875"><span class="linenos">3875</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator.copyparameter_sql-3875"><a href="#Generator.copyparameter_sql-3875"><span class="linenos">3875</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span 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.copyparameter_sql-3876"><a href="#Generator.copyparameter_sql-3876"><span class="linenos">3876</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3877"><a href="#Generator.copyparameter_sql-3877"><span class="linenos">3877</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">value</span><span class="p">:</span>
|
||||
</span><span id="Generator.copyparameter_sql-3878"><a href="#Generator.copyparameter_sql-3878"><span class="linenos">3878</span></a> <span class="k">return</span> <span class="n">option</span>
|
||||
</span><span id="Generator.copyparameter_sql-3879"><a href="#Generator.copyparameter_sql-3879"><span class="linenos">3879</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3880"><a href="#Generator.copyparameter_sql-3880"><span class="linenos">3880</span></a> <span class="n">op</span> <span class="o">=</span> <span class="s2">" = "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_EQ_REQUIRED</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator.copyparameter_sql-3881"><a href="#Generator.copyparameter_sql-3881"><span class="linenos">3881</span></a>
|
||||
</span><span id="Generator.copyparameter_sql-3882"><a href="#Generator.copyparameter_sql-3882"><span class="linenos">3882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">option</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -18887,29 +18923,30 @@ it is safer to copy.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.credentials_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.credentials_sql-3877"><a href="#Generator.credentials_sql-3877"><span class="linenos">3877</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.credentials_sql-3878"><a href="#Generator.credentials_sql-3878"><span class="linenos">3878</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3879"><a href="#Generator.credentials_sql-3879"><span class="linenos">3879</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="Generator.credentials_sql-3880"><a href="#Generator.credentials_sql-3880"><span class="linenos">3880</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="Generator.credentials_sql-3881"><a href="#Generator.credentials_sql-3881"><span class="linenos">3881</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3882"><a href="#Generator.credentials_sql-3882"><span class="linenos">3882</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3883"><a href="#Generator.credentials_sql-3883"><span class="linenos">3883</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Generator.credentials_sql-3884"><a href="#Generator.credentials_sql-3884"><span class="linenos">3884</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="Generator.credentials_sql-3885"><a href="#Generator.credentials_sql-3885"><span class="linenos">3885</span></a> <span class="n">credentials</span> <span 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">"credentials"</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.credentials_sql-3886"><a href="#Generator.credentials_sql-3886"><span class="linenos">3886</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3887"><a href="#Generator.credentials_sql-3887"><span class="linenos">3887</span></a>
|
||||
</span><span id="Generator.credentials_sql-3888"><a href="#Generator.credentials_sql-3888"><span class="linenos">3888</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3889"><a href="#Generator.credentials_sql-3889"><span class="linenos">3889</span></a>
|
||||
</span><span id="Generator.credentials_sql-3890"><a href="#Generator.credentials_sql-3890"><span class="linenos">3890</span></a> <span class="n">encryption</span> <span 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">"encryption"</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.credentials_sql-3891"><a href="#Generator.credentials_sql-3891"><span class="linenos">3891</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3892"><a href="#Generator.credentials_sql-3892"><span class="linenos">3892</span></a>
|
||||
</span><span id="Generator.credentials_sql-3893"><a href="#Generator.credentials_sql-3893"><span class="linenos">3893</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3894"><a href="#Generator.credentials_sql-3894"><span class="linenos">3894</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3895"><a href="#Generator.credentials_sql-3895"><span class="linenos">3895</span></a>
|
||||
</span><span id="Generator.credentials_sql-3896"><a href="#Generator.credentials_sql-3896"><span class="linenos">3896</span></a> <span class="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3897"><a href="#Generator.credentials_sql-3897"><span class="linenos">3897</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3898"><a href="#Generator.credentials_sql-3898"><span class="linenos">3898</span></a>
|
||||
</span><span id="Generator.credentials_sql-3899"><a href="#Generator.credentials_sql-3899"><span class="linenos">3899</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.credentials_sql-3884"><a href="#Generator.credentials_sql-3884"><span class="linenos">3884</span></a> <span class="k">def</span> <span class="nf">credentials_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Credentials</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.credentials_sql-3885"><a href="#Generator.credentials_sql-3885"><span class="linenos">3885</span></a> <span class="n">cred_expr</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3886"><a href="#Generator.credentials_sql-3886"><span class="linenos">3886</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cred_expr</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">):</span>
|
||||
</span><span id="Generator.credentials_sql-3887"><a href="#Generator.credentials_sql-3887"><span class="linenos">3887</span></a> <span class="c1"># Redshift case: CREDENTIALS <string></span>
|
||||
</span><span id="Generator.credentials_sql-3888"><a href="#Generator.credentials_sql-3888"><span class="linenos">3888</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3889"><a href="#Generator.credentials_sql-3889"><span class="linenos">3889</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3890"><a href="#Generator.credentials_sql-3890"><span class="linenos">3890</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="Generator.credentials_sql-3891"><a href="#Generator.credentials_sql-3891"><span class="linenos">3891</span></a> <span class="c1"># Snowflake case: CREDENTIALS = (...)</span>
|
||||
</span><span id="Generator.credentials_sql-3892"><a href="#Generator.credentials_sql-3892"><span class="linenos">3892</span></a> <span class="n">credentials</span> <span 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">"credentials"</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.credentials_sql-3893"><a href="#Generator.credentials_sql-3893"><span class="linenos">3893</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">cred_expr</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3894"><a href="#Generator.credentials_sql-3894"><span class="linenos">3894</span></a>
|
||||
</span><span id="Generator.credentials_sql-3895"><a href="#Generator.credentials_sql-3895"><span class="linenos">3895</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"storage"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3896"><a href="#Generator.credentials_sql-3896"><span class="linenos">3896</span></a> <span class="n">storage</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3897"><a href="#Generator.credentials_sql-3897"><span class="linenos">3897</span></a>
|
||||
</span><span id="Generator.credentials_sql-3898"><a href="#Generator.credentials_sql-3898"><span class="linenos">3898</span></a> <span class="n">encryption</span> <span 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">"encryption"</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.credentials_sql-3899"><a href="#Generator.credentials_sql-3899"><span class="linenos">3899</span></a> <span class="n">encryption</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3900"><a href="#Generator.credentials_sql-3900"><span class="linenos">3900</span></a>
|
||||
</span><span id="Generator.credentials_sql-3901"><a href="#Generator.credentials_sql-3901"><span class="linenos">3901</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"iam_role"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3902"><a href="#Generator.credentials_sql-3902"><span class="linenos">3902</span></a> <span class="n">iam_role</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3903"><a href="#Generator.credentials_sql-3903"><span class="linenos">3903</span></a>
|
||||
</span><span id="Generator.credentials_sql-3904"><a href="#Generator.credentials_sql-3904"><span class="linenos">3904</span></a> <span class="n">region</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"region"</span><span class="p">)</span>
|
||||
</span><span id="Generator.credentials_sql-3905"><a href="#Generator.credentials_sql-3905"><span class="linenos">3905</span></a> <span class="n">region</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.credentials_sql-3906"><a href="#Generator.credentials_sql-3906"><span class="linenos">3906</span></a>
|
||||
</span><span id="Generator.credentials_sql-3907"><a href="#Generator.credentials_sql-3907"><span class="linenos">3907</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">storage</span><span class="si">}{</span><span class="n">encryption</span><span class="si">}{</span><span class="n">iam_role</span><span class="si">}{</span><span class="n">region</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -18927,33 +18964,33 @@ it is safer to copy.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.copy_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.copy_sql-3901"><a href="#Generator.copy_sql-3901"><span class="linenos">3901</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3902"><a href="#Generator.copy_sql-3902"><span class="linenos">3902</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.copy_sql-3903"><a href="#Generator.copy_sql-3903"><span class="linenos">3903</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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.copy_sql-3904"><a href="#Generator.copy_sql-3904"><span class="linenos">3904</span></a>
|
||||
</span><span id="Generator.copy_sql-3905"><a href="#Generator.copy_sql-3905"><span class="linenos">3905</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3906"><a href="#Generator.copy_sql-3906"><span class="linenos">3906</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.copy_sql-3907"><a href="#Generator.copy_sql-3907"><span class="linenos">3907</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3908"><a href="#Generator.copy_sql-3908"><span class="linenos">3908</span></a> <span class="n">files</span> <span 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">"files"</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.copy_sql-3909"><a href="#Generator.copy_sql-3909"><span class="linenos">3909</span></a>
|
||||
</span><span id="Generator.copy_sql-3910"><a href="#Generator.copy_sql-3910"><span class="linenos">3910</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator.copy_sql-3911"><a href="#Generator.copy_sql-3911"><span class="linenos">3911</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="Generator.copy_sql-3912"><a href="#Generator.copy_sql-3912"><span class="linenos">3912</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3913"><a href="#Generator.copy_sql-3913"><span class="linenos">3913</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3914"><a href="#Generator.copy_sql-3914"><span class="linenos">3914</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3915"><a href="#Generator.copy_sql-3915"><span class="linenos">3915</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3916"><a href="#Generator.copy_sql-3916"><span class="linenos">3916</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3917"><a href="#Generator.copy_sql-3917"><span class="linenos">3917</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3918"><a href="#Generator.copy_sql-3918"><span class="linenos">3918</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3919"><a href="#Generator.copy_sql-3919"><span class="linenos">3919</span></a> <span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3920"><a href="#Generator.copy_sql-3920"><span class="linenos">3920</span></a>
|
||||
</span><span id="Generator.copy_sql-3921"><a href="#Generator.copy_sql-3921"><span class="linenos">3921</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3922"><a href="#Generator.copy_sql-3922"><span class="linenos">3922</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3923"><a href="#Generator.copy_sql-3923"><span class="linenos">3923</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator.copy_sql-3924"><a href="#Generator.copy_sql-3924"><span class="linenos">3924</span></a> <span class="k">elif</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.copy_sql-3925"><a href="#Generator.copy_sql-3925"><span class="linenos">3925</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator.copy_sql-3926"><a href="#Generator.copy_sql-3926"><span class="linenos">3926</span></a>
|
||||
</span><span id="Generator.copy_sql-3927"><a href="#Generator.copy_sql-3927"><span class="linenos">3927</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.copy_sql-3909"><a href="#Generator.copy_sql-3909"><span class="linenos">3909</span></a> <span class="k">def</span> <span class="nf">copy_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Copy</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3910"><a href="#Generator.copy_sql-3910"><span class="linenos">3910</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.copy_sql-3911"><a href="#Generator.copy_sql-3911"><span class="linenos">3911</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO </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="bp">self</span><span class="o">.</span><span class="n">COPY_HAS_INTO_KEYWORD</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.copy_sql-3912"><a href="#Generator.copy_sql-3912"><span class="linenos">3912</span></a>
|
||||
</span><span id="Generator.copy_sql-3913"><a href="#Generator.copy_sql-3913"><span class="linenos">3913</span></a> <span class="n">credentials</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"credentials"</span><span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3914"><a href="#Generator.copy_sql-3914"><span class="linenos">3914</span></a> <span class="n">credentials</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">credentials</span><span class="p">)</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="Generator.copy_sql-3915"><a href="#Generator.copy_sql-3915"><span class="linenos">3915</span></a> <span class="n">kind</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">"FROM"</span> <span class="k">if</span> <span class="n">expression</span><span 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="k">else</span> <span class="s2">"TO"</span><span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3916"><a href="#Generator.copy_sql-3916"><span class="linenos">3916</span></a> <span class="n">files</span> <span 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">"files"</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.copy_sql-3917"><a href="#Generator.copy_sql-3917"><span class="linenos">3917</span></a>
|
||||
</span><span id="Generator.copy_sql-3918"><a href="#Generator.copy_sql-3918"><span class="linenos">3918</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">", "</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_CSV</span> <span class="k">else</span> <span class="s2">" "</span>
|
||||
</span><span id="Generator.copy_sql-3919"><a href="#Generator.copy_sql-3919"><span class="linenos">3919</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span>
|
||||
</span><span id="Generator.copy_sql-3920"><a href="#Generator.copy_sql-3920"><span class="linenos">3920</span></a> <span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3921"><a href="#Generator.copy_sql-3921"><span class="linenos">3921</span></a> <span class="n">key</span><span class="o">=</span><span class="s2">"params"</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3922"><a href="#Generator.copy_sql-3922"><span class="linenos">3922</span></a> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3923"><a href="#Generator.copy_sql-3923"><span class="linenos">3923</span></a> <span class="n">new_line</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3924"><a href="#Generator.copy_sql-3924"><span class="linenos">3924</span></a> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3925"><a href="#Generator.copy_sql-3925"><span class="linenos">3925</span></a> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3926"><a href="#Generator.copy_sql-3926"><span class="linenos">3926</span></a> <span class="n">indent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">,</span>
|
||||
</span><span id="Generator.copy_sql-3927"><a href="#Generator.copy_sql-3927"><span class="linenos">3927</span></a> <span class="p">)</span>
|
||||
</span><span id="Generator.copy_sql-3928"><a href="#Generator.copy_sql-3928"><span class="linenos">3928</span></a>
|
||||
</span><span id="Generator.copy_sql-3929"><a href="#Generator.copy_sql-3929"><span class="linenos">3929</span></a> <span class="k">if</span> <span class="n">params</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3930"><a href="#Generator.copy_sql-3930"><span class="linenos">3930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">COPY_PARAMS_ARE_WRAPPED</span><span class="p">:</span>
|
||||
</span><span id="Generator.copy_sql-3931"><a href="#Generator.copy_sql-3931"><span class="linenos">3931</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="Generator.copy_sql-3932"><a href="#Generator.copy_sql-3932"><span class="linenos">3932</span></a> <span class="k">elif</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.copy_sql-3933"><a href="#Generator.copy_sql-3933"><span class="linenos">3933</span></a> <span class="n">params</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator.copy_sql-3934"><a href="#Generator.copy_sql-3934"><span class="linenos">3934</span></a>
|
||||
</span><span id="Generator.copy_sql-3935"><a href="#Generator.copy_sql-3935"><span class="linenos">3935</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COPY</span><span class="si">{</span><span class="n">this</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">files</span><span class="si">}{</span><span class="n">credentials</span><span class="si">}{</span><span class="n">params</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -18971,8 +19008,8 @@ it is safer to copy.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.semicolon_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.semicolon_sql-3929"><a href="#Generator.semicolon_sql-3929"><span class="linenos">3929</span></a> <span class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.semicolon_sql-3930"><a href="#Generator.semicolon_sql-3930"><span class="linenos">3930</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.semicolon_sql-3937"><a href="#Generator.semicolon_sql-3937"><span class="linenos">3937</span></a> <span class="k">def</span> <span class="nf">semicolon_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Semicolon</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.semicolon_sql-3938"><a href="#Generator.semicolon_sql-3938"><span class="linenos">3938</span></a> <span class="k">return</span> <span class="s2">""</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -18990,17 +19027,17 @@ it is safer to copy.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.datadeletionproperty_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.datadeletionproperty_sql-3932"><a href="#Generator.datadeletionproperty_sql-3932"><span class="linenos">3932</span></a> <span class="k">def</span> <span class="nf">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3933"><a href="#Generator.datadeletionproperty_sql-3933"><span class="linenos">3933</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3934"><a href="#Generator.datadeletionproperty_sql-3934"><span class="linenos">3934</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3935"><a href="#Generator.datadeletionproperty_sql-3935"><span class="linenos">3935</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3936"><a href="#Generator.datadeletionproperty_sql-3936"><span class="linenos">3936</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3937"><a href="#Generator.datadeletionproperty_sql-3937"><span class="linenos">3937</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3938"><a href="#Generator.datadeletionproperty_sql-3938"><span class="linenos">3938</span></a>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3939"><a href="#Generator.datadeletionproperty_sql-3939"><span class="linenos">3939</span></a> <span class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3940"><a href="#Generator.datadeletionproperty_sql-3940"><span class="linenos">3940</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3941"><a href="#Generator.datadeletionproperty_sql-3941"><span class="linenos">3941</span></a>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3942"><a href="#Generator.datadeletionproperty_sql-3942"><span class="linenos">3942</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</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.datadeletionproperty_sql-3940"><a href="#Generator.datadeletionproperty_sql-3940"><span class="linenos">3940</span></a> <span class="k">def</span> <span class="nf">datadeletionproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataDeletionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3941"><a href="#Generator.datadeletionproperty_sql-3941"><span class="linenos">3941</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="s2">"ON"</span> <span class="k">if</span> <span class="n">expression</span><span 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 class="k">else</span> <span class="s2">"OFF"</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3942"><a href="#Generator.datadeletionproperty_sql-3942"><span class="linenos">3942</span></a> <span class="n">filter_col</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"filter_column"</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3943"><a href="#Generator.datadeletionproperty_sql-3943"><span class="linenos">3943</span></a> <span class="n">filter_col</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">filter_col</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3944"><a href="#Generator.datadeletionproperty_sql-3944"><span class="linenos">3944</span></a> <span class="n">retention_period</span><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">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"retention_period"</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3945"><a href="#Generator.datadeletionproperty_sql-3945"><span class="linenos">3945</span></a> <span class="n">retention_period</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">retention_period</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3946"><a href="#Generator.datadeletionproperty_sql-3946"><span class="linenos">3946</span></a>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3947"><a href="#Generator.datadeletionproperty_sql-3947"><span class="linenos">3947</span></a> <span class="k">if</span> <span class="n">filter_col</span> <span class="ow">or</span> <span class="n">retention_period</span><span class="p">:</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3948"><a href="#Generator.datadeletionproperty_sql-3948"><span class="linenos">3948</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ON"</span><span class="p">,</span> <span class="n">filter_col</span><span class="p">,</span> <span class="n">retention_period</span><span class="p">)</span>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3949"><a href="#Generator.datadeletionproperty_sql-3949"><span class="linenos">3949</span></a>
|
||||
</span><span id="Generator.datadeletionproperty_sql-3950"><a href="#Generator.datadeletionproperty_sql-3950"><span class="linenos">3950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -19018,13 +19055,34 @@ it is safer to copy.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.maskingpolicycolumnconstraint_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.maskingpolicycolumnconstraint_sql-3944"><a href="#Generator.maskingpolicycolumnconstraint_sql-3944"><span class="linenos">3944</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3945"><a href="#Generator.maskingpolicycolumnconstraint_sql-3945"><span class="linenos">3945</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3946"><a href="#Generator.maskingpolicycolumnconstraint_sql-3946"><span class="linenos">3946</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3947"><a href="#Generator.maskingpolicycolumnconstraint_sql-3947"><span class="linenos">3947</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.maskingpolicycolumnconstraint_sql-3948"><a href="#Generator.maskingpolicycolumnconstraint_sql-3948"><span class="linenos">3948</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.maskingpolicycolumnconstraint_sql-3949"><a href="#Generator.maskingpolicycolumnconstraint_sql-3949"><span class="linenos">3949</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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.maskingpolicycolumnconstraint_sql-3950"><a href="#Generator.maskingpolicycolumnconstraint_sql-3950"><span class="linenos">3950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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.maskingpolicycolumnconstraint_sql-3952"><a href="#Generator.maskingpolicycolumnconstraint_sql-3952"><span class="linenos">3952</span></a> <span class="k">def</span> <span class="nf">maskingpolicycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3953"><a href="#Generator.maskingpolicycolumnconstraint_sql-3953"><span class="linenos">3953</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">MaskingPolicyColumnConstraint</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3954"><a href="#Generator.maskingpolicycolumnconstraint_sql-3954"><span class="linenos">3954</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.maskingpolicycolumnconstraint_sql-3955"><a href="#Generator.maskingpolicycolumnconstraint_sql-3955"><span class="linenos">3955</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.maskingpolicycolumnconstraint_sql-3956"><a href="#Generator.maskingpolicycolumnconstraint_sql-3956"><span class="linenos">3956</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.maskingpolicycolumnconstraint_sql-3957"><a href="#Generator.maskingpolicycolumnconstraint_sql-3957"><span class="linenos">3957</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING (</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.maskingpolicycolumnconstraint_sql-3958"><a href="#Generator.maskingpolicycolumnconstraint_sql-3958"><span class="linenos">3958</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MASKING POLICY </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>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div id="Generator.gapfill_sql" class="classattr">
|
||||
<input id="Generator.gapfill_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">gapfill_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#GapFill">sqlglot.expressions.GapFill</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Generator.gapfill_sql-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#Generator.gapfill_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Generator.gapfill_sql-3960"><a href="#Generator.gapfill_sql-3960"><span class="linenos">3960</span></a> <span class="k">def</span> <span class="nf">gapfill_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GapFill</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="Generator.gapfill_sql-3961"><a href="#Generator.gapfill_sql-3961"><span class="linenos">3961</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span 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.gapfill_sql-3962"><a href="#Generator.gapfill_sql-3962"><span class="linenos">3962</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="Generator.gapfill_sql-3963"><a href="#Generator.gapfill_sql-3963"><span class="linenos">3963</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">"GAP_FILL"</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="o">*</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">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 class="k">if</span> <span class="n">k</span> <span class="o">!=</span> <span class="s2">"this"</span><span class="p">])</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -1893,7 +1893,7 @@ belong to some totally-ordered set.</p>
|
|||
<section id="DATE_UNITS">
|
||||
<div class="attr variable">
|
||||
<span class="name">DATE_UNITS</span> =
|
||||
<span class="default_value">{'year', 'week', 'year_month', 'day', 'month', 'quarter'}</span>
|
||||
<span class="default_value">{'year', 'month', 'quarter', 'day', 'year_month', 'week'}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -577,7 +577,7 @@
|
|||
<div class="attr variable">
|
||||
<span class="name">ALL_JSON_PATH_PARTS</span> =
|
||||
<input id="ALL_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>, <class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>}</span>
|
||||
<label class="view-value-button pdoc-button" for="ALL_JSON_PATH_PARTS-view-value"></label><span class="default_value">{<class '<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>'>, <class '<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>'>, <class '<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>'>, <class '<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>'>, <class '<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>'>, <class '<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>'>, <class '<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>'>, <class '<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>'>, <class '<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>'>, <class '<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -586,7 +586,7 @@ queries if it would result in multiple table selects in a single query:</p>
|
|||
<div class="attr variable">
|
||||
<span class="name">UNMERGABLE_ARGS</span> =
|
||||
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'offset', 'prewhere', 'match', 'locks', 'qualify', 'windows', 'pivots', 'cluster', 'settings', 'having', 'group', 'options', 'distinct', 'with', 'distribute', 'sample', 'format', 'connect', 'laterals', 'limit', 'sort', 'into', 'kind'}</span>
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'sample', 'prewhere', 'offset', 'group', 'with', 'laterals', 'kind', 'distinct', 'having', 'sort', 'cluster', 'limit', 'format', 'locks', 'distribute', 'settings', 'match', 'connect', 'qualify', 'options', 'windows', 'into', 'pivots'}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -106,7 +106,7 @@
|
|||
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">copy</span><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="n">node</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">rewrite_between</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="o">=</span><span class="n">max_distance</span><span class="p">)</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 class="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</span><span class="p">:</span>
|
||||
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
|
||||
|
@ -155,103 +155,119 @@
|
|||
</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-87"><a href="#L-87"><span class="linenos"> 87</span></a>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="k">def</span> <span class="nf">normalization_distance</span><span 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">dnf</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">int</span><span class="p">:</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="sd"> The difference in the number of predicates between a given expression and its normalized form.</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="sd"> This is used as an estimate of the cost of the conversion which is exponential in complexity.</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="k">def</span> <span class="nf">normalization_distance</span><span class="p">(</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</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 class="n">dnf</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">max_</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s2">"inf"</span><span class="p">)</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">int</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">"""</span>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="sd"> The difference in the number of predicates between a given expression and its normalized form.</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"> Example:</span>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a><span class="sd"> >>> import sqlglot</span>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="sd"> >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd"> >>> normalization_distance(expression)</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a><span class="sd"> 4</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="sd"> Args:</span>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="sd"> expression: The expression to compute the normalization distance for.</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a><span class="sd"> dnf: Whether to check if the expression is in Disjunctive Normal Form (DNF).</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="sd"> Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</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="sd"> Returns:</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="sd"> The normalization distance.</span>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="nb">sum</span><span class="p">(</span><span class="mi">1</span> <span class="k">for</span> <span class="n">_</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">Connector</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</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><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> This is used as an estimate of the cost of the conversion which is exponential in complexity.</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="sd"> Example:</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="sd"> >>> import sqlglot</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a><span class="sd"> >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")</span>
|
||||
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a><span class="sd"> >>> normalization_distance(expression)</span>
|
||||
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a><span class="sd"> 4</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="sd"> Args:</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="sd"> expression: The expression to compute the normalization distance for.</span>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a><span class="sd"> dnf: Whether to check if the expression is in Disjunctive Normal Form (DNF).</span>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="sd"> Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="sd"> max_: stop early if count exceeds this.</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="sd"> Returns:</span>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a><span class="sd"> The normalization distance.</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="n">total</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="mi">1</span> <span class="k">for</span> <span class="n">_</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">Connector</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</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">def</span> <span class="nf">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">):</span>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a><span class="sd"> Returns a list of predicate lengths when expanded to normalized form.</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="sd"> (A AND B) OR C -> [2, 2] because len(A OR C), len(B OR C).</span>
|
||||
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span>
|
||||
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="k">for</span> <span class="n">length</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">):</span>
|
||||
</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">total</span> <span class="o">+=</span> <span class="n">length</span>
|
||||
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="k">if</span> <span class="n">total</span> <span class="o">></span> <span class="n">max_</span><span class="p">:</span>
|
||||
</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="k">return</span> <span class="n">total</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">total</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="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Connector</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="p">(</span><span class="mi">1</span><span class="p">,)</span>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</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-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">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">And</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">):</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">dnf</span><span class="p">)</span> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="p">)</span>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">return</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">dnf</span><span class="p">)</span> <span class="o">+</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="k">def</span> <span class="nf">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="o">=</span><span class="nb">float</span><span class="p">(</span><span class="s2">"inf"</span><span class="p">),</span> <span class="n">depth</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a><span class="sd"> Returns a list of predicate lengths when expanded to normalized form.</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"> (A AND B) OR C -> [2, 2] because len(A OR C), len(B OR C).</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">></span> <span class="n">max_</span><span class="p">:</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">yield</span> <span class="n">depth</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="k">return</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">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest</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">distributive_law</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">):</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a><span class="sd"> x OR (y AND z) -> (x OR y) AND (x OR z)</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a><span class="sd"> (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="n">normalized</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</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">expression</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="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</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">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Normalization distance </span><span class="si">{</span><span class="n">distance</span><span class="si">}</span><span class="s2"> exceeds max </span><span class="si">{</span><span class="n">max_distance</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><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">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">distributive_law</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">))</span>
|
||||
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">to_exp</span><span class="p">,</span> <span class="n">from_exp</span> <span class="o">=</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="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">)</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</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="n">exp</span><span class="o">.</span><span class="n">Or</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">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><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="k">yield</span> <span class="mi">1</span>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">return</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">depth</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">left</span><span class="p">,</span> <span class="n">right</span> <span class="o">=</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-139"><a href="#L-139"><span class="linenos">139</span></a>
|
||||
</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">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">):</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">,</span> <span class="n">depth</span><span class="p">):</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="k">for</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">,</span> <span class="n">depth</span><span class="p">):</span>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">yield</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span>
|
||||
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">yield from</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">,</span> <span class="n">depth</span><span class="p">)</span>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="k">yield from</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">right</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">,</span> <span class="n">depth</span><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><span id="L-149"><a href="#L-149"><span class="linenos">149</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">from_exp</span><span class="p">):</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest_operands</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="n">from_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">from_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">to_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">to_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</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">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">a</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">Connector</span><span class="p">)))</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">b</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">Connector</span><span class="p">))):</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <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">to_exp</span><span class="p">):</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">expression</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><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="k">def</span> <span class="nf">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">):</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <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">Connector</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">replace_children</span><span class="p">(</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">a</span><span class="p">,</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="n">to_func</span><span class="p">(</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">left</span><span class="p">))),</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">right</span><span class="p">))),</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</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="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">a</span> <span class="o">=</span> <span class="n">to_func</span><span class="p">(</span>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">left</span><span class="p">))),</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">right</span><span class="p">))),</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><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="k">return</span> <span class="n">a</span>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a><span class="k">def</span> <span class="nf">distributive_law</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">):</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a><span class="sd"> x OR (y AND z) -> (x OR y) AND (x OR z)</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a><span class="sd"> (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="k">if</span> <span class="n">normalized</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</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">expression</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">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="o">=</span><span class="n">max_distance</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="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</span><span class="p">:</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Normalization distance </span><span class="si">{</span><span class="n">distance</span><span class="si">}</span><span class="s2"> exceeds max </span><span class="si">{</span><span class="n">max_distance</span><span class="si">}</span><span class="s2">"</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">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">distributive_law</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">))</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">to_exp</span><span class="p">,</span> <span class="n">from_exp</span> <span class="o">=</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="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">)</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</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="n">exp</span><span class="o">.</span><span class="n">Or</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="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">from_exp</span><span class="p">):</span>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">()</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">from_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">from_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">to_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">to_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</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="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</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="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">a</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">Connector</span><span class="p">)))</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">b</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">Connector</span><span class="p">))):</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</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="nb">isinstance</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</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">expression</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a><span class="k">def</span> <span class="nf">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">):</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <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">Connector</span><span class="p">):</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">a</span><span class="p">,</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="k">lambda</span> <span class="n">c</span><span class="p">:</span> <span class="n">to_func</span><span class="p">(</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">left</span><span class="p">))),</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">right</span><span class="p">))),</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="p">),</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="p">)</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">a</span> <span class="o">=</span> <span class="n">to_func</span><span class="p">(</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</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">uniq_sort</span><span class="p">(</span><span class="n">flatten</span><span class="p">(</span><span class="n">from_func</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="o">.</span><span class="n">right</span><span class="p">))),</span>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</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="k">return</span> <span class="n">a</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -304,7 +320,7 @@
|
|||
</span><span id="normalize-37"><a href="#normalize-37"><span class="linenos">37</span></a> <span class="n">original</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="normalize-38"><a href="#normalize-38"><span class="linenos">38</span></a>
|
||||
</span><span id="normalize-39"><a href="#normalize-39"><span class="linenos">39</span></a> <span class="n">node</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">rewrite_between</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="normalize-40"><a href="#normalize-40"><span class="linenos">40</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="normalize-40"><a href="#normalize-40"><span class="linenos">40</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="o">=</span><span class="n">max_distance</span><span class="p">)</span>
|
||||
</span><span id="normalize-41"><a href="#normalize-41"><span class="linenos">41</span></a>
|
||||
</span><span id="normalize-42"><a href="#normalize-42"><span class="linenos">42</span></a> <span class="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</span><span class="p">:</span>
|
||||
</span><span id="normalize-43"><a href="#normalize-43"><span class="linenos">43</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span>
|
||||
|
@ -430,35 +446,43 @@ Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</li>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">normalization_distance</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span>, </span><span class="param"><span class="n">dnf</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="nb">int</span>:</span></span>
|
||||
<span class="name">normalization_distance</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">dnf</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span>,</span><span class="param"> <span class="n">max_</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">inf</span></span><span class="return-annotation">) -> <span class="nb">int</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="normalization_distance-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#normalization_distance"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="normalization_distance-89"><a href="#normalization_distance-89"><span class="linenos"> 89</span></a><span class="k">def</span> <span class="nf">normalization_distance</span><span 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">dnf</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">int</span><span class="p">:</span>
|
||||
</span><span id="normalization_distance-90"><a href="#normalization_distance-90"><span class="linenos"> 90</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="normalization_distance-91"><a href="#normalization_distance-91"><span class="linenos"> 91</span></a><span class="sd"> The difference in the number of predicates between a given expression and its normalized form.</span>
|
||||
</span><span id="normalization_distance-92"><a href="#normalization_distance-92"><span class="linenos"> 92</span></a>
|
||||
</span><span id="normalization_distance-93"><a href="#normalization_distance-93"><span class="linenos"> 93</span></a><span class="sd"> This is used as an estimate of the cost of the conversion which is exponential in complexity.</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="normalization_distance-89"><a href="#normalization_distance-89"><span class="linenos"> 89</span></a><span class="k">def</span> <span class="nf">normalization_distance</span><span class="p">(</span>
|
||||
</span><span id="normalization_distance-90"><a href="#normalization_distance-90"><span class="linenos"> 90</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 class="n">dnf</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">max_</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="s2">"inf"</span><span class="p">)</span>
|
||||
</span><span id="normalization_distance-91"><a href="#normalization_distance-91"><span class="linenos"> 91</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
</span><span id="normalization_distance-92"><a href="#normalization_distance-92"><span class="linenos"> 92</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="normalization_distance-93"><a href="#normalization_distance-93"><span class="linenos"> 93</span></a><span class="sd"> The difference in the number of predicates between a given expression and its normalized form.</span>
|
||||
</span><span id="normalization_distance-94"><a href="#normalization_distance-94"><span class="linenos"> 94</span></a>
|
||||
</span><span id="normalization_distance-95"><a href="#normalization_distance-95"><span class="linenos"> 95</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="normalization_distance-96"><a href="#normalization_distance-96"><span class="linenos"> 96</span></a><span class="sd"> >>> import sqlglot</span>
|
||||
</span><span id="normalization_distance-97"><a href="#normalization_distance-97"><span class="linenos"> 97</span></a><span class="sd"> >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")</span>
|
||||
</span><span id="normalization_distance-98"><a href="#normalization_distance-98"><span class="linenos"> 98</span></a><span class="sd"> >>> normalization_distance(expression)</span>
|
||||
</span><span id="normalization_distance-99"><a href="#normalization_distance-99"><span class="linenos"> 99</span></a><span class="sd"> 4</span>
|
||||
</span><span id="normalization_distance-100"><a href="#normalization_distance-100"><span class="linenos">100</span></a>
|
||||
</span><span id="normalization_distance-101"><a href="#normalization_distance-101"><span class="linenos">101</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="normalization_distance-102"><a href="#normalization_distance-102"><span class="linenos">102</span></a><span class="sd"> expression: The expression to compute the normalization distance for.</span>
|
||||
</span><span id="normalization_distance-103"><a href="#normalization_distance-103"><span class="linenos">103</span></a><span class="sd"> dnf: Whether to check if the expression is in Disjunctive Normal Form (DNF).</span>
|
||||
</span><span id="normalization_distance-104"><a href="#normalization_distance-104"><span class="linenos">104</span></a><span class="sd"> Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</span>
|
||||
</span><span id="normalization_distance-105"><a href="#normalization_distance-105"><span class="linenos">105</span></a>
|
||||
</span><span id="normalization_distance-106"><a href="#normalization_distance-106"><span class="linenos">106</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="normalization_distance-107"><a href="#normalization_distance-107"><span class="linenos">107</span></a><span class="sd"> The normalization distance.</span>
|
||||
</span><span id="normalization_distance-108"><a href="#normalization_distance-108"><span class="linenos">108</span></a><span class="sd"> """</span>
|
||||
</span><span id="normalization_distance-109"><a href="#normalization_distance-109"><span class="linenos">109</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">))</span> <span class="o">-</span> <span class="p">(</span>
|
||||
</span><span id="normalization_distance-110"><a href="#normalization_distance-110"><span class="linenos">110</span></a> <span class="nb">sum</span><span class="p">(</span><span class="mi">1</span> <span class="k">for</span> <span class="n">_</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">Connector</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span>
|
||||
</span><span id="normalization_distance-111"><a href="#normalization_distance-111"><span class="linenos">111</span></a> <span class="p">)</span>
|
||||
</span><span id="normalization_distance-95"><a href="#normalization_distance-95"><span class="linenos"> 95</span></a><span class="sd"> This is used as an estimate of the cost of the conversion which is exponential in complexity.</span>
|
||||
</span><span id="normalization_distance-96"><a href="#normalization_distance-96"><span class="linenos"> 96</span></a>
|
||||
</span><span id="normalization_distance-97"><a href="#normalization_distance-97"><span class="linenos"> 97</span></a><span class="sd"> Example:</span>
|
||||
</span><span id="normalization_distance-98"><a href="#normalization_distance-98"><span class="linenos"> 98</span></a><span class="sd"> >>> import sqlglot</span>
|
||||
</span><span id="normalization_distance-99"><a href="#normalization_distance-99"><span class="linenos"> 99</span></a><span class="sd"> >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")</span>
|
||||
</span><span id="normalization_distance-100"><a href="#normalization_distance-100"><span class="linenos">100</span></a><span class="sd"> >>> normalization_distance(expression)</span>
|
||||
</span><span id="normalization_distance-101"><a href="#normalization_distance-101"><span class="linenos">101</span></a><span class="sd"> 4</span>
|
||||
</span><span id="normalization_distance-102"><a href="#normalization_distance-102"><span class="linenos">102</span></a>
|
||||
</span><span id="normalization_distance-103"><a href="#normalization_distance-103"><span class="linenos">103</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="normalization_distance-104"><a href="#normalization_distance-104"><span class="linenos">104</span></a><span class="sd"> expression: The expression to compute the normalization distance for.</span>
|
||||
</span><span id="normalization_distance-105"><a href="#normalization_distance-105"><span class="linenos">105</span></a><span class="sd"> dnf: Whether to check if the expression is in Disjunctive Normal Form (DNF).</span>
|
||||
</span><span id="normalization_distance-106"><a href="#normalization_distance-106"><span class="linenos">106</span></a><span class="sd"> Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</span>
|
||||
</span><span id="normalization_distance-107"><a href="#normalization_distance-107"><span class="linenos">107</span></a><span class="sd"> max_: stop early if count exceeds this.</span>
|
||||
</span><span id="normalization_distance-108"><a href="#normalization_distance-108"><span class="linenos">108</span></a>
|
||||
</span><span id="normalization_distance-109"><a href="#normalization_distance-109"><span class="linenos">109</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="normalization_distance-110"><a href="#normalization_distance-110"><span class="linenos">110</span></a><span class="sd"> The normalization distance.</span>
|
||||
</span><span id="normalization_distance-111"><a href="#normalization_distance-111"><span class="linenos">111</span></a><span class="sd"> """</span>
|
||||
</span><span id="normalization_distance-112"><a href="#normalization_distance-112"><span class="linenos">112</span></a> <span class="n">total</span> <span class="o">=</span> <span class="o">-</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="mi">1</span> <span class="k">for</span> <span class="n">_</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">Connector</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</span><span id="normalization_distance-113"><a href="#normalization_distance-113"><span class="linenos">113</span></a>
|
||||
</span><span id="normalization_distance-114"><a href="#normalization_distance-114"><span class="linenos">114</span></a> <span class="k">for</span> <span class="n">length</span> <span class="ow">in</span> <span class="n">_predicate_lengths</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="p">):</span>
|
||||
</span><span id="normalization_distance-115"><a href="#normalization_distance-115"><span class="linenos">115</span></a> <span class="n">total</span> <span class="o">+=</span> <span class="n">length</span>
|
||||
</span><span id="normalization_distance-116"><a href="#normalization_distance-116"><span class="linenos">116</span></a> <span class="k">if</span> <span class="n">total</span> <span class="o">></span> <span class="n">max_</span><span class="p">:</span>
|
||||
</span><span id="normalization_distance-117"><a href="#normalization_distance-117"><span class="linenos">117</span></a> <span class="k">return</span> <span class="n">total</span>
|
||||
</span><span id="normalization_distance-118"><a href="#normalization_distance-118"><span class="linenos">118</span></a>
|
||||
</span><span id="normalization_distance-119"><a href="#normalization_distance-119"><span class="linenos">119</span></a> <span class="k">return</span> <span class="n">total</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -484,6 +508,7 @@ Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</li>
|
|||
<li><strong>expression:</strong> The expression to compute the normalization distance for.</li>
|
||||
<li><strong>dnf:</strong> Whether to check if the expression is in Disjunctive Normal Form (DNF).
|
||||
Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</li>
|
||||
<li><strong>max_:</strong> stop early if count exceeds this.</li>
|
||||
</ul>
|
||||
|
||||
<h6 id="returns">Returns:</h6>
|
||||
|
@ -506,38 +531,38 @@ Default: False, i.e. we check if it's in Conjunctive Normal Form (CNF).</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#distributive_law"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="distributive_law-134"><a href="#distributive_law-134"><span class="linenos">134</span></a><span class="k">def</span> <span class="nf">distributive_law</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-135"><a href="#distributive_law-135"><span class="linenos">135</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="distributive_law-136"><a href="#distributive_law-136"><span class="linenos">136</span></a><span class="sd"> x OR (y AND z) -> (x OR y) AND (x OR z)</span>
|
||||
</span><span id="distributive_law-137"><a href="#distributive_law-137"><span class="linenos">137</span></a><span class="sd"> (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)</span>
|
||||
</span><span id="distributive_law-138"><a href="#distributive_law-138"><span class="linenos">138</span></a><span class="sd"> """</span>
|
||||
</span><span id="distributive_law-139"><a href="#distributive_law-139"><span class="linenos">139</span></a> <span class="k">if</span> <span class="n">normalized</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-140"><a href="#distributive_law-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="distributive_law-141"><a href="#distributive_law-141"><span class="linenos">141</span></a>
|
||||
</span><span id="distributive_law-142"><a href="#distributive_law-142"><span class="linenos">142</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-143"><a href="#distributive_law-143"><span class="linenos">143</span></a>
|
||||
</span><span id="distributive_law-144"><a href="#distributive_law-144"><span class="linenos">144</span></a> <span class="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</span><span class="p">:</span>
|
||||
</span><span id="distributive_law-145"><a href="#distributive_law-145"><span class="linenos">145</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Normalization distance </span><span class="si">{</span><span class="n">distance</span><span class="si">}</span><span class="s2"> exceeds max </span><span class="si">{</span><span class="n">max_distance</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-146"><a href="#distributive_law-146"><span class="linenos">146</span></a>
|
||||
</span><span id="distributive_law-147"><a href="#distributive_law-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">distributive_law</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">))</span>
|
||||
</span><span id="distributive_law-148"><a href="#distributive_law-148"><span class="linenos">148</span></a> <span class="n">to_exp</span><span class="p">,</span> <span class="n">from_exp</span> <span class="o">=</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="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">)</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</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="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-149"><a href="#distributive_law-149"><span class="linenos">149</span></a>
|
||||
</span><span id="distributive_law-150"><a href="#distributive_law-150"><span class="linenos">150</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">from_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-151"><a href="#distributive_law-151"><span class="linenos">151</span></a> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">()</span>
|
||||
</span><span id="distributive_law-152"><a href="#distributive_law-152"><span class="linenos">152</span></a>
|
||||
</span><span id="distributive_law-153"><a href="#distributive_law-153"><span class="linenos">153</span></a> <span class="n">from_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">from_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="distributive_law-154"><a href="#distributive_law-154"><span class="linenos">154</span></a> <span class="n">to_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">to_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="distributive_law-155"><a href="#distributive_law-155"><span class="linenos">155</span></a>
|
||||
</span><span id="distributive_law-156"><a href="#distributive_law-156"><span class="linenos">156</span></a> <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">to_exp</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-157"><a href="#distributive_law-157"><span class="linenos">157</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">a</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">Connector</span><span class="p">)))</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">b</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">Connector</span><span class="p">))):</span>
|
||||
</span><span id="distributive_law-158"><a href="#distributive_law-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-159"><a href="#distributive_law-159"><span class="linenos">159</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-160"><a href="#distributive_law-160"><span class="linenos">160</span></a> <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">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-161"><a href="#distributive_law-161"><span class="linenos">161</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-162"><a href="#distributive_law-162"><span class="linenos">162</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-163"><a href="#distributive_law-163"><span class="linenos">163</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-164"><a href="#distributive_law-164"><span class="linenos">164</span></a>
|
||||
</span><span id="distributive_law-165"><a href="#distributive_law-165"><span class="linenos">165</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="distributive_law-150"><a href="#distributive_law-150"><span class="linenos">150</span></a><span class="k">def</span> <span class="nf">distributive_law</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-151"><a href="#distributive_law-151"><span class="linenos">151</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="distributive_law-152"><a href="#distributive_law-152"><span class="linenos">152</span></a><span class="sd"> x OR (y AND z) -> (x OR y) AND (x OR z)</span>
|
||||
</span><span id="distributive_law-153"><a href="#distributive_law-153"><span class="linenos">153</span></a><span class="sd"> (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)</span>
|
||||
</span><span id="distributive_law-154"><a href="#distributive_law-154"><span class="linenos">154</span></a><span class="sd"> """</span>
|
||||
</span><span id="distributive_law-155"><a href="#distributive_law-155"><span class="linenos">155</span></a> <span class="k">if</span> <span class="n">normalized</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-156"><a href="#distributive_law-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="distributive_law-157"><a href="#distributive_law-157"><span class="linenos">157</span></a>
|
||||
</span><span id="distributive_law-158"><a href="#distributive_law-158"><span class="linenos">158</span></a> <span class="n">distance</span> <span class="o">=</span> <span class="n">normalization_distance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">dnf</span><span class="o">=</span><span class="n">dnf</span><span class="p">,</span> <span class="n">max_</span><span class="o">=</span><span class="n">max_distance</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-159"><a href="#distributive_law-159"><span class="linenos">159</span></a>
|
||||
</span><span id="distributive_law-160"><a href="#distributive_law-160"><span class="linenos">160</span></a> <span class="k">if</span> <span class="n">distance</span> <span class="o">></span> <span class="n">max_distance</span><span class="p">:</span>
|
||||
</span><span id="distributive_law-161"><a href="#distributive_law-161"><span class="linenos">161</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Normalization distance </span><span class="si">{</span><span class="n">distance</span><span class="si">}</span><span class="s2"> exceeds max </span><span class="si">{</span><span class="n">max_distance</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-162"><a href="#distributive_law-162"><span class="linenos">162</span></a>
|
||||
</span><span id="distributive_law-163"><a href="#distributive_law-163"><span class="linenos">163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">distributive_law</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">dnf</span><span class="p">,</span> <span class="n">max_distance</span><span class="p">))</span>
|
||||
</span><span id="distributive_law-164"><a href="#distributive_law-164"><span class="linenos">164</span></a> <span class="n">to_exp</span><span class="p">,</span> <span class="n">from_exp</span> <span class="o">=</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="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">)</span> <span class="k">if</span> <span class="n">dnf</span> <span class="k">else</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="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-165"><a href="#distributive_law-165"><span class="linenos">165</span></a>
|
||||
</span><span id="distributive_law-166"><a href="#distributive_law-166"><span class="linenos">166</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">from_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-167"><a href="#distributive_law-167"><span class="linenos">167</span></a> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">unnest_operands</span><span class="p">()</span>
|
||||
</span><span id="distributive_law-168"><a href="#distributive_law-168"><span class="linenos">168</span></a>
|
||||
</span><span id="distributive_law-169"><a href="#distributive_law-169"><span class="linenos">169</span></a> <span class="n">from_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">from_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="distributive_law-170"><a href="#distributive_law-170"><span class="linenos">170</span></a> <span class="n">to_func</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">and_</span> <span class="k">if</span> <span class="n">to_exp</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">or_</span>
|
||||
</span><span id="distributive_law-171"><a href="#distributive_law-171"><span class="linenos">171</span></a>
|
||||
</span><span id="distributive_law-172"><a href="#distributive_law-172"><span class="linenos">172</span></a> <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">to_exp</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-173"><a href="#distributive_law-173"><span class="linenos">173</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">a</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">Connector</span><span class="p">)))</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="nb">tuple</span><span class="p">(</span><span class="n">b</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">Connector</span><span class="p">))):</span>
|
||||
</span><span id="distributive_law-174"><a href="#distributive_law-174"><span class="linenos">174</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-175"><a href="#distributive_law-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-176"><a href="#distributive_law-176"><span class="linenos">176</span></a> <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">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-177"><a href="#distributive_law-177"><span class="linenos">177</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">a</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-178"><a href="#distributive_law-178"><span class="linenos">178</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">to_exp</span><span class="p">):</span>
|
||||
</span><span id="distributive_law-179"><a href="#distributive_law-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="n">_distribute</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">from_func</span><span class="p">,</span> <span class="n">to_func</span><span class="p">)</span>
|
||||
</span><span id="distributive_law-180"><a href="#distributive_law-180"><span class="linenos">180</span></a>
|
||||
</span><span id="distributive_law-181"><a href="#distributive_law-181"><span class="linenos">181</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -64,96 +64,95 @@
|
|||
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">inspect</span>
|
||||
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</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-5"><a href="#L-5"><span class="linenos"> 5</span></a>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">import</span> <span class="nn">sqlglot</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">Schema</span><span class="p">,</span> <span class="n">exp</span>
|
||||
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</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-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
|
||||
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.canonicalize</span> <span class="kn">import</span> <span class="n">canonicalize</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.eliminate_ctes</span> <span class="kn">import</span> <span class="n">eliminate_ctes</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.optimizer.eliminate_joins</span> <span class="kn">import</span> <span class="n">eliminate_joins</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.optimizer.eliminate_subqueries</span> <span class="kn">import</span> <span class="n">eliminate_subqueries</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.optimizer.merge_subqueries</span> <span class="kn">import</span> <span class="n">merge_subqueries</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.optimizer.normalize</span> <span class="kn">import</span> <span class="n">normalize</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.optimizer.optimize_joins</span> <span class="kn">import</span> <span class="n">optimize_joins</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.optimizer.pushdown_predicates</span> <span class="kn">import</span> <span class="n">pushdown_predicates</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.optimizer.pushdown_projections</span> <span class="kn">import</span> <span class="n">pushdown_projections</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.optimizer.qualify</span> <span class="kn">import</span> <span class="n">qualify</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.optimizer.qualify_columns</span> <span class="kn">import</span> <span class="n">quote_identifiers</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.optimizer.simplify</span> <span class="kn">import</span> <span class="n">simplify</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.optimizer.unnest_subqueries</span> <span class="kn">import</span> <span class="n">unnest_subqueries</span>
|
||||
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a><span class="kn">from</span> <span class="nn">sqlglot.schema</span> <span class="kn">import</span> <span class="n">ensure_schema</span>
|
||||
</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="n">RULES</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-26"><a href="#L-26"><span class="linenos">26</span></a> <span class="n">qualify</span><span class="p">,</span>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos">27</span></a> <span class="n">pushdown_projections</span><span class="p">,</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos">28</span></a> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos">29</span></a> <span class="n">unnest_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos">30</span></a> <span class="n">pushdown_predicates</span><span class="p">,</span>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos">31</span></a> <span class="n">optimize_joins</span><span class="p">,</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos">32</span></a> <span class="n">eliminate_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos">33</span></a> <span class="n">merge_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a> <span class="n">eliminate_joins</span><span class="p">,</span>
|
||||
</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="n">eliminate_ctes</span><span class="p">,</span>
|
||||
</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="n">quote_identifiers</span><span class="p">,</span>
|
||||
</span><span id="L-37"><a href="#L-37"><span class="linenos">37</span></a> <span class="n">annotate_types</span><span class="p">,</span>
|
||||
</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> <span class="n">canonicalize</span><span class="p">,</span>
|
||||
</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a> <span class="n">simplify</span><span class="p">,</span>
|
||||
</span><span id="L-40"><a href="#L-40"><span class="linenos">40</span></a><span class="p">)</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">Schema</span><span class="p">,</span> <span class="n">exp</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</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-8"><a href="#L-8"><span class="linenos"> 8</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.annotate_types</span> <span class="kn">import</span> <span class="n">annotate_types</span>
|
||||
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.canonicalize</span> <span class="kn">import</span> <span class="n">canonicalize</span>
|
||||
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.eliminate_ctes</span> <span class="kn">import</span> <span class="n">eliminate_ctes</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a><span class="kn">from</span> <span class="nn">sqlglot.optimizer.eliminate_joins</span> <span class="kn">import</span> <span class="n">eliminate_joins</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.optimizer.eliminate_subqueries</span> <span class="kn">import</span> <span class="n">eliminate_subqueries</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.optimizer.merge_subqueries</span> <span class="kn">import</span> <span class="n">merge_subqueries</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.optimizer.normalize</span> <span class="kn">import</span> <span class="n">normalize</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.optimizer.optimize_joins</span> <span class="kn">import</span> <span class="n">optimize_joins</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.optimizer.pushdown_predicates</span> <span class="kn">import</span> <span class="n">pushdown_predicates</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.optimizer.pushdown_projections</span> <span class="kn">import</span> <span class="n">pushdown_projections</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.optimizer.qualify</span> <span class="kn">import</span> <span class="n">qualify</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.optimizer.qualify_columns</span> <span class="kn">import</span> <span class="n">quote_identifiers</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.optimizer.simplify</span> <span class="kn">import</span> <span class="n">simplify</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.optimizer.unnest_subqueries</span> <span class="kn">import</span> <span class="n">unnest_subqueries</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.schema</span> <span class="kn">import</span> <span class="n">ensure_schema</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="n">RULES</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-25"><a href="#L-25"><span class="linenos">25</span></a> <span class="n">qualify</span><span class="p">,</span>
|
||||
</span><span id="L-26"><a href="#L-26"><span class="linenos">26</span></a> <span class="n">pushdown_projections</span><span class="p">,</span>
|
||||
</span><span id="L-27"><a href="#L-27"><span class="linenos">27</span></a> <span class="n">normalize</span><span class="p">,</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos">28</span></a> <span class="n">unnest_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos">29</span></a> <span class="n">pushdown_predicates</span><span class="p">,</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos">30</span></a> <span class="n">optimize_joins</span><span class="p">,</span>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos">31</span></a> <span class="n">eliminate_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos">32</span></a> <span class="n">merge_subqueries</span><span class="p">,</span>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos">33</span></a> <span class="n">eliminate_joins</span><span class="p">,</span>
|
||||
</span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a> <span class="n">eliminate_ctes</span><span class="p">,</span>
|
||||
</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="n">quote_identifiers</span><span class="p">,</span>
|
||||
</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="n">annotate_types</span><span class="p">,</span>
|
||||
</span><span id="L-37"><a href="#L-37"><span class="linenos">37</span></a> <span class="n">canonicalize</span><span class="p">,</span>
|
||||
</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> <span class="n">simplify</span><span class="p">,</span>
|
||||
</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a><span class="p">)</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><span id="L-43"><a href="#L-43"><span class="linenos">43</span></a><span class="k">def</span> <span class="nf">optimize</span><span class="p">(</span>
|
||||
</span><span id="L-44"><a href="#L-44"><span class="linenos">44</span></a> <span class="n">expression</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-45"><a href="#L-45"><span class="linenos">45</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">dict</span> <span class="o">|</span> <span class="n">Schema</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> <span class="n">db</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-47"><a href="#L-47"><span class="linenos">47</span></a> <span class="n">catalog</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-48"><a href="#L-48"><span class="linenos">48</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-49"><a href="#L-49"><span class="linenos">49</span></a> <span class="n">rules</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="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="n">RULES</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">kwargs</span><span class="p">,</span>
|
||||
</span><span id="L-51"><a href="#L-51"><span class="linenos">51</span></a><span class="p">)</span> <span 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-52"><a href="#L-52"><span class="linenos">52</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-53"><a href="#L-53"><span class="linenos">53</span></a><span class="sd"> Rewrite a sqlglot AST into an optimized form.</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="sd"> Args:</span>
|
||||
</span><span id="L-56"><a href="#L-56"><span class="linenos">56</span></a><span class="sd"> expression: expression to optimize</span>
|
||||
</span><span id="L-57"><a href="#L-57"><span class="linenos">57</span></a><span class="sd"> schema: database schema.</span>
|
||||
</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a><span class="sd"> This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of</span>
|
||||
</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a><span class="sd"> the following forms:</span>
|
||||
</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a><span class="sd"> 1. {table: {col: type}}</span>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos">61</span></a><span class="sd"> 2. {db: {table: {col: type}}}</span>
|
||||
</span><span id="L-62"><a href="#L-62"><span class="linenos">62</span></a><span class="sd"> 3. {catalog: {db: {table: {col: type}}}}</span>
|
||||
</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a><span class="sd"> If no schema is provided then the default schema defined at `sqlgot.schema` will be used</span>
|
||||
</span><span id="L-64"><a href="#L-64"><span class="linenos">64</span></a><span class="sd"> db: specify the default database, as might be set by a `USE DATABASE db` statement</span>
|
||||
</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a><span class="sd"> catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement</span>
|
||||
</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a><span class="sd"> dialect: The dialect to parse the sql string.</span>
|
||||
</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a><span class="sd"> rules: sequence of optimizer rules to use.</span>
|
||||
</span><span id="L-68"><a href="#L-68"><span class="linenos">68</span></a><span class="sd"> Many of the rules require tables and columns to be qualified.</span>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos">69</span></a><span class="sd"> Do not remove `qualify` from the sequence of rules unless you know what you're doing!</span>
|
||||
</span><span id="L-70"><a href="#L-70"><span class="linenos">70</span></a><span class="sd"> **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.</span>
|
||||
</span><span id="L-71"><a href="#L-71"><span class="linenos">71</span></a>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos">72</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a><span class="sd"> The optimized expression.</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos">75</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">ensure_schema</span><span class="p">(</span><span class="n">schema</span> <span class="ow">or</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</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-76"><a href="#L-76"><span class="linenos">76</span></a> <span class="n">possible_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="n">db</span><span class="p">,</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="n">catalog</span><span class="p">,</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="n">schema</span><span class="p">,</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos">80</span></a> <span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a> <span class="s2">"isolate_tables"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># needed for other optimizations to perform well</span>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos">82</span></a> <span class="s2">"quote_identifiers"</span><span class="p">:</span> <span class="kc">False</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">kwargs</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><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="n">optimized</span> <span class="o">=</span> <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="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos">87</span></a> <span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="n">rules</span><span class="p">:</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos">88</span></a> <span class="c1"># Find any additional rule parameters, beyond `expression`</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos">89</span></a> <span class="n">rule_params</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getfullargspec</span><span class="p">(</span><span class="n">rule</span><span class="p">)</span><span class="o">.</span><span class="n">args</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos">90</span></a> <span class="n">rule_kwargs</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="n">param</span><span class="p">:</span> <span class="n">possible_kwargs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">rule_params</span> <span class="k">if</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">possible_kwargs</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="n">optimized</span> <span class="o">=</span> <span class="n">rule</span><span class="p">(</span><span class="n">optimized</span><span class="p">,</span> <span class="o">**</span><span class="n">rule_kwargs</span><span class="p">)</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos">94</span></a>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos">95</span></a> <span class="k">return</span> <span class="n">optimized</span>
|
||||
</span><span id="L-42"><a href="#L-42"><span class="linenos">42</span></a><span class="k">def</span> <span class="nf">optimize</span><span class="p">(</span>
|
||||
</span><span id="L-43"><a href="#L-43"><span class="linenos">43</span></a> <span class="n">expression</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-44"><a href="#L-44"><span class="linenos">44</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">dict</span> <span class="o">|</span> <span class="n">Schema</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-45"><a href="#L-45"><span class="linenos">45</span></a> <span class="n">db</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> <span class="n">catalog</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-47"><a href="#L-47"><span class="linenos">47</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-48"><a href="#L-48"><span class="linenos">48</span></a> <span class="n">rules</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="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="n">RULES</span><span class="p">,</span>
|
||||
</span><span id="L-49"><a href="#L-49"><span class="linenos">49</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="L-50"><a href="#L-50"><span class="linenos">50</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-51"><a href="#L-51"><span class="linenos">51</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-52"><a href="#L-52"><span class="linenos">52</span></a><span class="sd"> Rewrite a sqlglot AST into an optimized form.</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="sd"> Args:</span>
|
||||
</span><span id="L-55"><a href="#L-55"><span class="linenos">55</span></a><span class="sd"> expression: expression to optimize</span>
|
||||
</span><span id="L-56"><a href="#L-56"><span class="linenos">56</span></a><span class="sd"> schema: database schema.</span>
|
||||
</span><span id="L-57"><a href="#L-57"><span class="linenos">57</span></a><span class="sd"> This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of</span>
|
||||
</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a><span class="sd"> the following forms:</span>
|
||||
</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a><span class="sd"> 1. {table: {col: type}}</span>
|
||||
</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a><span class="sd"> 2. {db: {table: {col: type}}}</span>
|
||||
</span><span id="L-61"><a href="#L-61"><span class="linenos">61</span></a><span class="sd"> 3. {catalog: {db: {table: {col: type}}}}</span>
|
||||
</span><span id="L-62"><a href="#L-62"><span class="linenos">62</span></a><span class="sd"> If no schema is provided then the default schema defined at `sqlgot.schema` will be used</span>
|
||||
</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a><span class="sd"> db: specify the default database, as might be set by a `USE DATABASE db` statement</span>
|
||||
</span><span id="L-64"><a href="#L-64"><span class="linenos">64</span></a><span class="sd"> catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement</span>
|
||||
</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a><span class="sd"> dialect: The dialect to parse the sql string.</span>
|
||||
</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a><span class="sd"> rules: sequence of optimizer rules to use.</span>
|
||||
</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a><span class="sd"> Many of the rules require tables and columns to be qualified.</span>
|
||||
</span><span id="L-68"><a href="#L-68"><span class="linenos">68</span></a><span class="sd"> Do not remove `qualify` from the sequence of rules unless you know what you're doing!</span>
|
||||
</span><span id="L-69"><a href="#L-69"><span class="linenos">69</span></a><span class="sd"> **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.</span>
|
||||
</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="sd"> Returns:</span>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos">72</span></a><span class="sd"> The optimized expression.</span>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos">73</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos">74</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">ensure_schema</span><span class="p">(</span><span class="n">schema</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-75"><a href="#L-75"><span class="linenos">75</span></a> <span class="n">possible_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos">76</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="n">db</span><span class="p">,</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos">77</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="n">catalog</span><span class="p">,</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos">78</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="n">schema</span><span class="p">,</span>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos">79</span></a> <span class="s2">"dialect"</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="s2">"isolate_tables"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># needed for other optimizations to perform well</span>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos">81</span></a> <span class="s2">"quote_identifiers"</span><span class="p">:</span> <span class="kc">False</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">kwargs</span><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><span id="L-85"><a href="#L-85"><span class="linenos">85</span></a> <span class="n">optimized</span> <span class="o">=</span> <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="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos">86</span></a> <span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="n">rules</span><span class="p">:</span>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos">87</span></a> <span class="c1"># Find any additional rule parameters, beyond `expression`</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos">88</span></a> <span class="n">rule_params</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getfullargspec</span><span class="p">(</span><span class="n">rule</span><span class="p">)</span><span class="o">.</span><span class="n">args</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos">89</span></a> <span class="n">rule_kwargs</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="n">param</span><span class="p">:</span> <span class="n">possible_kwargs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">rule_params</span> <span class="k">if</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">possible_kwargs</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="n">optimized</span> <span class="o">=</span> <span class="n">rule</span><span class="p">(</span><span class="n">optimized</span><span class="p">,</span> <span class="o">**</span><span class="n">rule_kwargs</span><span class="p">)</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">return</span> <span class="n">optimized</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -182,59 +181,59 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#optimize"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="optimize-44"><a href="#optimize-44"><span class="linenos">44</span></a><span class="k">def</span> <span class="nf">optimize</span><span class="p">(</span>
|
||||
</span><span id="optimize-45"><a href="#optimize-45"><span class="linenos">45</span></a> <span class="n">expression</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="optimize-46"><a href="#optimize-46"><span class="linenos">46</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">dict</span> <span class="o">|</span> <span class="n">Schema</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-47"><a href="#optimize-47"><span class="linenos">47</span></a> <span class="n">db</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-48"><a href="#optimize-48"><span class="linenos">48</span></a> <span class="n">catalog</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-49"><a href="#optimize-49"><span class="linenos">49</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="optimize-50"><a href="#optimize-50"><span class="linenos">50</span></a> <span class="n">rules</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="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="n">RULES</span><span class="p">,</span>
|
||||
</span><span id="optimize-51"><a href="#optimize-51"><span class="linenos">51</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="optimize-52"><a href="#optimize-52"><span class="linenos">52</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="optimize-53"><a href="#optimize-53"><span class="linenos">53</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="optimize-54"><a href="#optimize-54"><span class="linenos">54</span></a><span class="sd"> Rewrite a sqlglot AST into an optimized form.</span>
|
||||
</span><span id="optimize-55"><a href="#optimize-55"><span class="linenos">55</span></a>
|
||||
</span><span id="optimize-56"><a href="#optimize-56"><span class="linenos">56</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="optimize-57"><a href="#optimize-57"><span class="linenos">57</span></a><span class="sd"> expression: expression to optimize</span>
|
||||
</span><span id="optimize-58"><a href="#optimize-58"><span class="linenos">58</span></a><span class="sd"> schema: database schema.</span>
|
||||
</span><span id="optimize-59"><a href="#optimize-59"><span class="linenos">59</span></a><span class="sd"> This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of</span>
|
||||
</span><span id="optimize-60"><a href="#optimize-60"><span class="linenos">60</span></a><span class="sd"> the following forms:</span>
|
||||
</span><span id="optimize-61"><a href="#optimize-61"><span class="linenos">61</span></a><span class="sd"> 1. {table: {col: type}}</span>
|
||||
</span><span id="optimize-62"><a href="#optimize-62"><span class="linenos">62</span></a><span class="sd"> 2. {db: {table: {col: type}}}</span>
|
||||
</span><span id="optimize-63"><a href="#optimize-63"><span class="linenos">63</span></a><span class="sd"> 3. {catalog: {db: {table: {col: type}}}}</span>
|
||||
</span><span id="optimize-64"><a href="#optimize-64"><span class="linenos">64</span></a><span class="sd"> If no schema is provided then the default schema defined at `sqlgot.schema` will be used</span>
|
||||
</span><span id="optimize-65"><a href="#optimize-65"><span class="linenos">65</span></a><span class="sd"> db: specify the default database, as might be set by a `USE DATABASE db` statement</span>
|
||||
</span><span id="optimize-66"><a href="#optimize-66"><span class="linenos">66</span></a><span class="sd"> catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement</span>
|
||||
</span><span id="optimize-67"><a href="#optimize-67"><span class="linenos">67</span></a><span class="sd"> dialect: The dialect to parse the sql string.</span>
|
||||
</span><span id="optimize-68"><a href="#optimize-68"><span class="linenos">68</span></a><span class="sd"> rules: sequence of optimizer rules to use.</span>
|
||||
</span><span id="optimize-69"><a href="#optimize-69"><span class="linenos">69</span></a><span class="sd"> Many of the rules require tables and columns to be qualified.</span>
|
||||
</span><span id="optimize-70"><a href="#optimize-70"><span class="linenos">70</span></a><span class="sd"> Do not remove `qualify` from the sequence of rules unless you know what you're doing!</span>
|
||||
</span><span id="optimize-71"><a href="#optimize-71"><span class="linenos">71</span></a><span class="sd"> **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.</span>
|
||||
</span><span id="optimize-72"><a href="#optimize-72"><span class="linenos">72</span></a>
|
||||
</span><span id="optimize-73"><a href="#optimize-73"><span class="linenos">73</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="optimize-74"><a href="#optimize-74"><span class="linenos">74</span></a><span class="sd"> The optimized expression.</span>
|
||||
</span><span id="optimize-75"><a href="#optimize-75"><span class="linenos">75</span></a><span class="sd"> """</span>
|
||||
</span><span id="optimize-76"><a href="#optimize-76"><span class="linenos">76</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">ensure_schema</span><span class="p">(</span><span class="n">schema</span> <span class="ow">or</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</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="optimize-77"><a href="#optimize-77"><span class="linenos">77</span></a> <span class="n">possible_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="optimize-78"><a href="#optimize-78"><span class="linenos">78</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="n">db</span><span class="p">,</span>
|
||||
</span><span id="optimize-79"><a href="#optimize-79"><span class="linenos">79</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="n">catalog</span><span class="p">,</span>
|
||||
</span><span id="optimize-80"><a href="#optimize-80"><span class="linenos">80</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="n">schema</span><span class="p">,</span>
|
||||
</span><span id="optimize-81"><a href="#optimize-81"><span class="linenos">81</span></a> <span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="optimize-82"><a href="#optimize-82"><span class="linenos">82</span></a> <span class="s2">"isolate_tables"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># needed for other optimizations to perform well</span>
|
||||
</span><span id="optimize-83"><a href="#optimize-83"><span class="linenos">83</span></a> <span class="s2">"quote_identifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="optimize-84"><a href="#optimize-84"><span class="linenos">84</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="optimize-85"><a href="#optimize-85"><span class="linenos">85</span></a> <span class="p">}</span>
|
||||
</span><span id="optimize-86"><a href="#optimize-86"><span class="linenos">86</span></a>
|
||||
</span><span id="optimize-87"><a href="#optimize-87"><span class="linenos">87</span></a> <span class="n">optimized</span> <span class="o">=</span> <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="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="optimize-88"><a href="#optimize-88"><span class="linenos">88</span></a> <span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="n">rules</span><span class="p">:</span>
|
||||
</span><span id="optimize-89"><a href="#optimize-89"><span class="linenos">89</span></a> <span class="c1"># Find any additional rule parameters, beyond `expression`</span>
|
||||
</span><span id="optimize-90"><a href="#optimize-90"><span class="linenos">90</span></a> <span class="n">rule_params</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getfullargspec</span><span class="p">(</span><span class="n">rule</span><span class="p">)</span><span class="o">.</span><span class="n">args</span>
|
||||
</span><span id="optimize-91"><a href="#optimize-91"><span class="linenos">91</span></a> <span class="n">rule_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="optimize-92"><a href="#optimize-92"><span class="linenos">92</span></a> <span class="n">param</span><span class="p">:</span> <span class="n">possible_kwargs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">rule_params</span> <span class="k">if</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">possible_kwargs</span>
|
||||
</span><span id="optimize-93"><a href="#optimize-93"><span class="linenos">93</span></a> <span class="p">}</span>
|
||||
</span><span id="optimize-94"><a href="#optimize-94"><span class="linenos">94</span></a> <span class="n">optimized</span> <span class="o">=</span> <span class="n">rule</span><span class="p">(</span><span class="n">optimized</span><span class="p">,</span> <span class="o">**</span><span class="n">rule_kwargs</span><span class="p">)</span>
|
||||
</span><span id="optimize-95"><a href="#optimize-95"><span class="linenos">95</span></a>
|
||||
</span><span id="optimize-96"><a href="#optimize-96"><span class="linenos">96</span></a> <span class="k">return</span> <span class="n">optimized</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="optimize-43"><a href="#optimize-43"><span class="linenos">43</span></a><span class="k">def</span> <span class="nf">optimize</span><span class="p">(</span>
|
||||
</span><span id="optimize-44"><a href="#optimize-44"><span class="linenos">44</span></a> <span class="n">expression</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="optimize-45"><a href="#optimize-45"><span class="linenos">45</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">dict</span> <span class="o">|</span> <span class="n">Schema</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-46"><a href="#optimize-46"><span class="linenos">46</span></a> <span class="n">db</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-47"><a href="#optimize-47"><span class="linenos">47</span></a> <span class="n">catalog</span><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">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="optimize-48"><a href="#optimize-48"><span class="linenos">48</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="optimize-49"><a href="#optimize-49"><span class="linenos">49</span></a> <span class="n">rules</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="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="n">RULES</span><span class="p">,</span>
|
||||
</span><span id="optimize-50"><a href="#optimize-50"><span class="linenos">50</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="optimize-51"><a href="#optimize-51"><span class="linenos">51</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="optimize-52"><a href="#optimize-52"><span class="linenos">52</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="optimize-53"><a href="#optimize-53"><span class="linenos">53</span></a><span class="sd"> Rewrite a sqlglot AST into an optimized form.</span>
|
||||
</span><span id="optimize-54"><a href="#optimize-54"><span class="linenos">54</span></a>
|
||||
</span><span id="optimize-55"><a href="#optimize-55"><span class="linenos">55</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="optimize-56"><a href="#optimize-56"><span class="linenos">56</span></a><span class="sd"> expression: expression to optimize</span>
|
||||
</span><span id="optimize-57"><a href="#optimize-57"><span class="linenos">57</span></a><span class="sd"> schema: database schema.</span>
|
||||
</span><span id="optimize-58"><a href="#optimize-58"><span class="linenos">58</span></a><span class="sd"> This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of</span>
|
||||
</span><span id="optimize-59"><a href="#optimize-59"><span class="linenos">59</span></a><span class="sd"> the following forms:</span>
|
||||
</span><span id="optimize-60"><a href="#optimize-60"><span class="linenos">60</span></a><span class="sd"> 1. {table: {col: type}}</span>
|
||||
</span><span id="optimize-61"><a href="#optimize-61"><span class="linenos">61</span></a><span class="sd"> 2. {db: {table: {col: type}}}</span>
|
||||
</span><span id="optimize-62"><a href="#optimize-62"><span class="linenos">62</span></a><span class="sd"> 3. {catalog: {db: {table: {col: type}}}}</span>
|
||||
</span><span id="optimize-63"><a href="#optimize-63"><span class="linenos">63</span></a><span class="sd"> If no schema is provided then the default schema defined at `sqlgot.schema` will be used</span>
|
||||
</span><span id="optimize-64"><a href="#optimize-64"><span class="linenos">64</span></a><span class="sd"> db: specify the default database, as might be set by a `USE DATABASE db` statement</span>
|
||||
</span><span id="optimize-65"><a href="#optimize-65"><span class="linenos">65</span></a><span class="sd"> catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement</span>
|
||||
</span><span id="optimize-66"><a href="#optimize-66"><span class="linenos">66</span></a><span class="sd"> dialect: The dialect to parse the sql string.</span>
|
||||
</span><span id="optimize-67"><a href="#optimize-67"><span class="linenos">67</span></a><span class="sd"> rules: sequence of optimizer rules to use.</span>
|
||||
</span><span id="optimize-68"><a href="#optimize-68"><span class="linenos">68</span></a><span class="sd"> Many of the rules require tables and columns to be qualified.</span>
|
||||
</span><span id="optimize-69"><a href="#optimize-69"><span class="linenos">69</span></a><span class="sd"> Do not remove `qualify` from the sequence of rules unless you know what you're doing!</span>
|
||||
</span><span id="optimize-70"><a href="#optimize-70"><span class="linenos">70</span></a><span class="sd"> **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.</span>
|
||||
</span><span id="optimize-71"><a href="#optimize-71"><span class="linenos">71</span></a>
|
||||
</span><span id="optimize-72"><a href="#optimize-72"><span class="linenos">72</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="optimize-73"><a href="#optimize-73"><span class="linenos">73</span></a><span class="sd"> The optimized expression.</span>
|
||||
</span><span id="optimize-74"><a href="#optimize-74"><span class="linenos">74</span></a><span class="sd"> """</span>
|
||||
</span><span id="optimize-75"><a href="#optimize-75"><span class="linenos">75</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="n">ensure_schema</span><span class="p">(</span><span class="n">schema</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="optimize-76"><a href="#optimize-76"><span class="linenos">76</span></a> <span class="n">possible_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="optimize-77"><a href="#optimize-77"><span class="linenos">77</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="n">db</span><span class="p">,</span>
|
||||
</span><span id="optimize-78"><a href="#optimize-78"><span class="linenos">78</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="n">catalog</span><span class="p">,</span>
|
||||
</span><span id="optimize-79"><a href="#optimize-79"><span class="linenos">79</span></a> <span class="s2">"schema"</span><span class="p">:</span> <span class="n">schema</span><span class="p">,</span>
|
||||
</span><span id="optimize-80"><a href="#optimize-80"><span class="linenos">80</span></a> <span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span>
|
||||
</span><span id="optimize-81"><a href="#optimize-81"><span class="linenos">81</span></a> <span class="s2">"isolate_tables"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="c1"># needed for other optimizations to perform well</span>
|
||||
</span><span id="optimize-82"><a href="#optimize-82"><span class="linenos">82</span></a> <span class="s2">"quote_identifiers"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="optimize-83"><a href="#optimize-83"><span class="linenos">83</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span>
|
||||
</span><span id="optimize-84"><a href="#optimize-84"><span class="linenos">84</span></a> <span class="p">}</span>
|
||||
</span><span id="optimize-85"><a href="#optimize-85"><span class="linenos">85</span></a>
|
||||
</span><span id="optimize-86"><a href="#optimize-86"><span class="linenos">86</span></a> <span class="n">optimized</span> <span class="o">=</span> <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="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
</span><span id="optimize-87"><a href="#optimize-87"><span class="linenos">87</span></a> <span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="n">rules</span><span class="p">:</span>
|
||||
</span><span id="optimize-88"><a href="#optimize-88"><span class="linenos">88</span></a> <span class="c1"># Find any additional rule parameters, beyond `expression`</span>
|
||||
</span><span id="optimize-89"><a href="#optimize-89"><span class="linenos">89</span></a> <span class="n">rule_params</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getfullargspec</span><span class="p">(</span><span class="n">rule</span><span class="p">)</span><span class="o">.</span><span class="n">args</span>
|
||||
</span><span id="optimize-90"><a href="#optimize-90"><span class="linenos">90</span></a> <span class="n">rule_kwargs</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="optimize-91"><a href="#optimize-91"><span class="linenos">91</span></a> <span class="n">param</span><span class="p">:</span> <span class="n">possible_kwargs</span><span class="p">[</span><span class="n">param</span><span class="p">]</span> <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">rule_params</span> <span class="k">if</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">possible_kwargs</span>
|
||||
</span><span id="optimize-92"><a href="#optimize-92"><span class="linenos">92</span></a> <span class="p">}</span>
|
||||
</span><span id="optimize-93"><a href="#optimize-93"><span class="linenos">93</span></a> <span class="n">optimized</span> <span class="o">=</span> <span class="n">rule</span><span class="p">(</span><span class="n">optimized</span><span class="p">,</span> <span class="o">**</span><span class="n">rule_kwargs</span><span class="p">)</span>
|
||||
</span><span id="optimize-94"><a href="#optimize-94"><span class="linenos">94</span></a>
|
||||
</span><span id="optimize-95"><a href="#optimize-95"><span class="linenos">95</span></a> <span class="k">return</span> <span class="n">optimized</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
24414
docs/sqlglot/parser.html
24414
docs/sqlglot/parser.html
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -8664,7 +8664,7 @@
|
|||
<div class="attr variable">
|
||||
<span class="name">COMMANDS</span> =
|
||||
<input id="Tokenizer.COMMANDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>, <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, <<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>}</span>
|
||||
<label class="view-value-button pdoc-button" for="Tokenizer.COMMANDS-view-value"></label><span class="default_value">{<<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'>, <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'>, <<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'>, <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'>}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue