aboutsummaryrefslogblamecommitdiffstats
path: root/lib/tuple.ml
blob: 1f47214c8e61acd0591d9d60b347ca91a4562aea (plain) (tree)
1
2
3
4
5
6
7
8
                            
                       
 

                             
                                                                                                  
   
 



                                                                                                
                    
 


                                                                                                  
                    
 
                                                                                                
 
                                             
                                                          


                                                                           
module AttributeMap = struct
  include BatMap.String

  let sexp_of_t sexp_of_v m =
    Sexplib.Sexp.List
      (List.map (fun (k, v) -> Sexplib.Sexp.List [Sexplib.Sexp.Atom k; sexp_of_v v]) (bindings m))
end

type non_materialized =
  { hash: Conventions.Hash.t;
    relation: Conventions.Name.t;
    attributes: Attribute.referenced AttributeMap.t (* lineage : Relation.Lineage.t option; *) }
[@@deriving sexp_of]

type materialized =
  { relation: Conventions.Name.t;
    attributes: Attribute.materialized AttributeMap.t (* lineage : Relation.Lineage.t option; *) }
[@@deriving sexp_of]

type t = Materialized of materialized | NonMaterialized of non_materialized [@@deriving sexp_of]

let make_materialized ~relation ~attributes =
  Materialized {relation; attributes (* lineage = None *)}

let materialized_equal a b =
  AttributeMap.equal Attribute.materialized_equal a.attributes b.attributes