Qcert.Compiler.QLib.QOQL


Module QOQL(runtime:CompilerRuntime).

  Module Data := QData.QData runtime.
  Module Ops := QOperators.QOperators runtime.

  Definition expr : Set
    := OQL.oql_expr.
  Definition program : Set
    := OQL.oql.
  Definition t : Set
    := program.
  Definition var : Set
    := String.string.

  Definition select_expr : Set
    := OQL.oql_select_expr.
  Definition in_expr : Set
    := OQL.oql_in_expr.
  Definition where_expr : Set
    := OQL.oql_where_expr.
  Definition order_by_expr : Set
    := OQL.oql_order_by_expr.

  Definition ovar : var → expr
    := OQL.OVar.
  Definition oconst : Data.data → expr
    := OQL.OConst.
  Definition otable : String.string → expr
    := OQL.OTable.
  Definition obinop : Ops.Binary.op → expr →expr → expr
    := OQL.OBinop.
  Definition ounop : Ops.Unary.op → expr → expr
    := OQL.OUnop.
  Definition osfw : select_expr → list in_expr → where_expr → order_by_expr → expr
    := OQL.OSFW.
  Definition oselect : expr → select_expr
    := OQL.OSelect.
  Definition oselectdistinct : expr → select_expr
    := OQL.OSelectDistinct.
  Definition oin : String.string → expr → in_expr
    := OQL.OIn.
  Definition oincast : String.string → String.string → expr → in_expr
    := OQL.OInCast.
  Definition otrue : where_expr
    := OQL.OTrue.
  Definition owhere : expr → where_expr
    := OQL.OWhere.
  Definition onoorder : order_by_expr
    := OQL.ONoOrder.
  Definition oorder_by : expr → RDataSort.SortDesc → order_by_expr
    := OQL.OOrderBy.

  Definition odot : String.string → expr → expr
    := OQLSugar.ODot.
  Definition oarrow : String.string → expr → expr
    := OQLSugar.OArrow.
  Definition ostruct : list (String.string × expr) → expr
    := OQLSugar.OStruct.

  Definition tableify : expr → expr
    := OQLSugar.tableify.

  Definition define : String.string → expr → program → program
    := OQL.ODefineQuery.

  Definition undefine : String.string → program → program
    := OQL.OUndefineQuery.

  Definition query : expr → program
    := OQL.OQuery.

End QOQL.