1
0
Fork 0

Merging upstream version 25.0.3.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:37:40 +01:00
parent 03b67e2ec9
commit 021892b3ff
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
84 changed files with 33016 additions and 31040 deletions

View file

@ -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">-&gt;</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">&quot;this&quot;</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">&quot;FILE_FORMAT&quot;</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">&quot;expression&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;</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">)&quot;</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">&quot;expression&quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">&quot;FILE_FORMAT&quot;</span> <span class="k">else</span> <span class="s2">&quot;, &quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;COPY_OPTIONS&quot;</span><span class="p">,</span> <span class="s2">&quot;FORMAT_OPTIONS&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot; = &quot;</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">&quot;</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">)&quot;</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">&quot;</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">&quot;</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">&quot;expression&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;storage&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</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">&quot;&quot;</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">&quot;storage&quot;</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">&quot;STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot;TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;GAP_FILL&quot;</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">&quot;this&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot;FILE_FORMAT&quot;</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">&quot;expression&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;</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">)&quot;</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">&quot;expression&quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">&quot;FILE_FORMAT&quot;</span> <span class="k">else</span> <span class="s2">&quot;, &quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;COPY_OPTIONS&quot;</span><span class="p">,</span> <span class="s2">&quot;FORMAT_OPTIONS&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot; = &quot;</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">&quot;</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">)&quot;</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">&quot;</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">&quot;</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">&quot;expression&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;storage&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</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">&quot;&quot;</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">&quot;storage&quot;</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">&quot;STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot;TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;GAP_FILL&quot;</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">&quot;this&quot;</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">{&lt;class &#39;<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;}</span>
<label class="view-value-button pdoc-button" for="Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="expressions.html#JSONPathSlice">sqlglot.expressions.JSONPathSlice</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathScript">sqlglot.expressions.JSONPathScript</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathRecursive">sqlglot.expressions.JSONPathRecursive</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathFilter">sqlglot.expressions.JSONPathFilter</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathUnion">sqlglot.expressions.JSONPathUnion</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;, &lt;class &#39;<a href="expressions.html#JSONPathSelector">sqlglot.expressions.JSONPathSelector</a>&#39;&gt;}</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">{&lt;Type.CHAR: &#39;CHAR&#39;&gt;, &lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;Type.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;Type.NCHAR: &#39;NCHAR&#39;&gt;}</span>
<span class="default_value">{&lt;Type.CHAR: &#39;CHAR&#39;&gt;, &lt;Type.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;Type.NCHAR: &#39;NCHAR&#39;&gt;}</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">-&gt;</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">&quot;this&quot;</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">&quot;FILE_FORMAT&quot;</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">&quot;expression&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;</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">)&quot;</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">&quot;expression&quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="o">==</span> <span class="s2">&quot;FILE_FORMAT&quot;</span> <span class="k">else</span> <span class="s2">&quot;, &quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot; &quot;</span> <span class="k">if</span> <span class="n">upper</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">&quot;COPY_OPTIONS&quot;</span><span class="p">,</span> <span class="s2">&quot;FORMAT_OPTIONS&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot; = &quot;</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">&quot;</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">)&quot;</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">&quot;</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">&quot;</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">&quot;expression&quot;</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">&quot; = &quot;</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">&quot; &quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;storage&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;credentials&quot;</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 &lt;string&gt;</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">&quot;credentials&quot;</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">&quot;CREDENTIALS </span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">credentials</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;credentials&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot;CREDENTIALS = (</span><span class="si">{</span><span class="n">credentials</span><span class="si">}</span><span class="s2">)&quot;</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">&quot;&quot;</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">&quot;storage&quot;</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">&quot;STORAGE_INTEGRATION = </span><span class="si">{</span><span class="n">storage</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">storage</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;encryption&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">&quot; &quot;</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">&quot; ENCRYPTION = (</span><span class="si">{</span><span class="n">encryption</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">encryption</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;iam_role&quot;</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">&quot;IAM_ROLE </span><span class="si">{</span><span class="n">iam_role</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">iam_role</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;region&quot;</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">&quot; REGION </span><span class="si">{</span><span class="n">region</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">region</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;</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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="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">&quot; </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;credentials&quot;</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">&quot;&quot;</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">&quot;FROM&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;kind&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;TO&quot;</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">&quot;files&quot;</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="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">&quot;, &quot;</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">&quot; &quot;</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">&quot;params&quot;</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">&quot; WITH (</span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">)&quot;</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">&quot; </span><span class="si">{</span><span class="n">params</span><span class="si">}</span><span class="s2">&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;ON&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;on&quot;</span><span class="p">)</span> <span class="k">else</span> <span class="s2">&quot;OFF&quot;</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">&quot;filter_column&quot;</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">&quot;FILTER_COLUMN=</span><span class="si">{</span><span class="n">filter_col</span><span class="si">}</span><span class="s2">&quot;</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">&quot;retention_period&quot;</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">&quot;RETENTION_PERIOD=</span><span class="si">{</span><span class="n">retention_period</span><span class="si">}</span><span class="s2">&quot;</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">&quot;ON&quot;</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">&quot;DATA_DELETION=</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot; USING (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)&quot;</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">&quot;&quot;</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">&quot;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">&quot;</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">-&gt;</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">&quot;this&quot;</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">&quot;TABLE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">&quot;</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">&quot;GAP_FILL&quot;</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">&quot;this&quot;</span><span class="p">])</span>
</span></pre></div>