File tree Expand file tree Collapse file tree 1 file changed +51
-17
lines changed
Expand file tree Collapse file tree 1 file changed +51
-17
lines changed Original file line number Diff line number Diff line change @@ -762,23 +762,57 @@ defmodule AshSql.Expr do
762762 ) do
763763 if bindings . sql_behaviour . array_overlap_operator? ( ) do
764764 # Postgres
765- do_dynamic_expr (
766- query ,
767- % Fragment {
768- embedded?: pred_embedded? ,
769- arguments: [
770- raw: "((" ,
771- expr: left ,
772- raw: ") && (" ,
773- expr: right ,
774- raw: "))"
775- ]
776- } ,
777- bindings ,
778- embedded? ,
779- acc ,
780- :boolean
781- )
765+ { [ left_type , right_type ] , _type } =
766+ determine_types (
767+ bindings . sql_behaviour ,
768+ Ash.Query.Function.Intersects ,
769+ [ left , right ] ,
770+ :boolean
771+ )
772+
773+ { left_expr , acc } =
774+ if left_type do
775+ maybe_type_expr (
776+ query ,
777+ left ,
778+ set_location ( bindings , :sub_expr ) ,
779+ pred_embedded? || embedded? ,
780+ acc ,
781+ left_type
782+ )
783+ else
784+ do_dynamic_expr (
785+ query ,
786+ left ,
787+ set_location ( bindings , :sub_expr ) ,
788+ pred_embedded? || embedded? ,
789+ acc ,
790+ nil
791+ )
792+ end
793+
794+ { right_expr , acc } =
795+ if right_type do
796+ maybe_type_expr (
797+ query ,
798+ right ,
799+ set_location ( bindings , :sub_expr ) ,
800+ pred_embedded? || embedded? ,
801+ acc ,
802+ right_type
803+ )
804+ else
805+ do_dynamic_expr (
806+ query ,
807+ right ,
808+ set_location ( bindings , :sub_expr ) ,
809+ pred_embedded? || embedded? ,
810+ acc ,
811+ nil
812+ )
813+ end
814+
815+ { Ecto.Query . dynamic ( fragment ( "(? && ?)" , ^ left_expr , ^ right_expr ) ) , acc }
782816 else
783817 # SQLite
784818 do_dynamic_expr (
You can’t perform that action at this time.
0 commit comments