   org.jooq.FieldLike
   (as-field* [n args]
     (let [^String alias (first args)]
-      (.asField n alias))))
+      (.asField n alias)))
+
+  suricatta.types.Deferred
+  (as-field* [n args] (as-field* @n args)))
 
 (extend-protocol ITableAlias
   org.jooq.Name

(defprotocol IVal
  (val* [_] "Val constructor"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Protocol Implementations
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(extend-protocol IField
  java.lang.String
  (field* ^org.jooq.Field [^String s]


(defn truncate
  [t]
  (defer
    (-> (table* t)
        (DSL/truncate))))

(defn alter-table
  [t]
  (defer
    (-> (table* t)
        (DSL/alterTable))))

(defn- datatype-transformer
  [opts ^org.jooq.DataType acc attr]
