@@ -399,6 +399,25 @@ <h1 class="modulename">
399399
400400
401401<span class="k">def</span> <span class="nf">_db_maximum_expr</span><span class="p">(</span><span class="n">dbmodel</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span>
402+ <span class="n">x_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
403+ <span class="n">y_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
404+ <span class="k">return</span> <span class="p">(</span>
405+ <span class="s2">"CASE"</span>
406+ <span class="o">+</span> <span class="s2">" WHEN "</span>
407+ <span class="o">+</span> <span class="s2">"(("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">" IS NULL) OR "</span>
408+ <span class="o">+</span> <span class="s2">"("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">") >= ("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">"))"</span>
409+ <span class="o">+</span> <span class="s2">" THEN "</span>
410+ <span class="o">+</span> <span class="n">x_expr</span>
411+ <span class="o">+</span> <span class="s2">" WHEN "</span>
412+ <span class="o">+</span> <span class="s2">"(("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">" IS NULL) OR "</span>
413+ <span class="o">+</span> <span class="s2">"("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">") >= ("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">"))"</span>
414+ <span class="o">+</span> <span class="s2">" THEN "</span>
415+ <span class="o">+</span> <span class="n">y_expr</span>
416+ <span class="o">+</span> <span class="s2">" ELSE NULL END"</span>
417+ <span class="p">)</span>
418+
419+
420+ <span class="k">def</span> <span class="nf">_db_fmax_expr</span><span class="p">(</span><span class="n">dbmodel</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span>
402421 <span class="n">x_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
403422 <span class="n">y_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
404423 <span class="k">return</span> <span class="p">(</span>
@@ -424,6 +443,25 @@ <h1 class="modulename">
424443
425444
426445<span class="k">def</span> <span class="nf">_db_minimum_expr</span><span class="p">(</span><span class="n">dbmodel</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span>
446+ <span class="n">x_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
447+ <span class="n">y_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
448+ <span class="k">return</span> <span class="p">(</span>
449+ <span class="s2">"CASE"</span>
450+ <span class="o">+</span> <span class="s2">" WHEN "</span>
451+ <span class="o">+</span> <span class="s2">"(("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">" IS NULL) OR "</span>
452+ <span class="o">+</span> <span class="s2">"("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">") <= ("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">"))"</span>
453+ <span class="o">+</span> <span class="s2">" THEN "</span>
454+ <span class="o">+</span> <span class="n">x_expr</span>
455+ <span class="o">+</span> <span class="s2">" WHEN "</span>
456+ <span class="o">+</span> <span class="s2">"(("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">" IS NULL) OR "</span>
457+ <span class="o">+</span> <span class="s2">"("</span> <span class="o">+</span> <span class="n">y_expr</span> <span class="o">+</span> <span class="s2">") <= ("</span> <span class="o">+</span> <span class="n">x_expr</span> <span class="o">+</span> <span class="s2">"))"</span>
458+ <span class="o">+</span> <span class="s2">" THEN "</span>
459+ <span class="o">+</span> <span class="n">y_expr</span>
460+ <span class="o">+</span> <span class="s2">" ELSE NULL END"</span>
461+ <span class="p">)</span>
462+
463+
464+ <span class="k">def</span> <span class="nf">_db_fmin_expr</span><span class="p">(</span><span class="n">dbmodel</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span>
427465 <span class="n">x_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
428466 <span class="n">y_expr</span> <span class="o">=</span> <span class="n">dbmodel</span><span class="o">.</span><span class="n">expr_to_sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">want_inline_parens</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
429467 <span class="k">return</span> <span class="p">(</span>
@@ -706,7 +744,9 @@ <h1 class="modulename">
706744 <span class="s2">"if_else"</span><span class="p">:</span> <span class="n">_db_if_else_expr</span><span class="p">,</span>
707745 <span class="s2">"is_in"</span><span class="p">:</span> <span class="n">_db_is_in_expr</span><span class="p">,</span>
708746 <span class="s2">"maximum"</span><span class="p">:</span> <span class="n">_db_maximum_expr</span><span class="p">,</span>
747+ <span class="s2">"fmax"</span><span class="p">:</span> <span class="n">_db_fmax_expr</span><span class="p">,</span>
709748 <span class="s2">"minimum"</span><span class="p">:</span> <span class="n">_db_minimum_expr</span><span class="p">,</span>
749+ <span class="s2">"fmin"</span><span class="p">:</span> <span class="n">_db_fmin_expr</span><span class="p">,</span>
710750 <span class="s2">"count"</span><span class="p">:</span> <span class="n">_db_count_expr</span><span class="p">,</span>
711751 <span class="s2">"concat"</span><span class="p">:</span> <span class="n">_db_concat_expr</span><span class="p">,</span>
712752 <span class="s2">"coalesce"</span><span class="p">:</span> <span class="n">_db_coalesce_expr</span><span class="p">,</span>
0 commit comments