                                         :value value}))
 
             [["=" column-name value]]
-            (let [colname (first (str/split column-name #"\."))
-                  cinfo (get-in query-rec [:projections colname])]
+            ;; FIXME: pass parsed representation down
+            (let [[top & path] (parse/parse-field column-name)
+                  cinfo (get-in query-rec [:projections (:name top)])]
               (case (:type cinfo)
                :timestamp
                (map->BinaryExpression {:operator :=

                     "Argument \"{0}\" is incompatible with numeric field \"{1}\"."
                     value (name field))))))

              [[(:or ">" ">=" "<" "<=")  (field :guard #(not (str/includes? %  "."))) _]]
              (let [col-type (get-in query-context [:projections field :type])]
                (when-not (or (vec? field)
                              (contains? #{:numeric :timestamp :jsonb-scalar}

                (map->NullExpression {:column cinfo :null? value})))

            [["~" column-name value]]
            ;; FIXME: pass parsed representation down
            (let [[top] (parse/parse-field column-name)
                  cinfo (get-in query-rec [:projections (:name top)])]
              (case (:type cinfo)
                :array
                (map->ArrayRegexExpression {:column cinfo :value value})
