Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions bench/bench_ocaml.ml
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ let random_man rng i =
; "full-name", One_value (String (name ^ " " ^ last_name))
; "alias", Many_values alias_values
; "sex", One_value (Keyword (if next_int rng 2 = 0 then "male" else "female"))
; "age", One_value (Int (next_int rng 100))
; "salary", One_value (Int (next_int rng 100_000))
; "age", One_value (Int64 (Int64.of_int (next_int rng 100)))
; "salary", One_value (Int64 (Int64.of_int (next_int rng 100_000)))
]
}

Expand Down Expand Up @@ -255,15 +255,15 @@ let main () =
bench config "q5-shortcircuit" (fun () ->
consume_rows
(q_string
~inputs:[ Arg_scalar (Result_value (String "Anastasia")); Arg_scalar (Result_value (Int 35)) ]
~inputs:[ Arg_scalar (Result_value (String "Anastasia")); Arg_scalar (Result_value (Int64 35L)) ]
(Lazy.force db)
"[:find ?e ?n ?l ?a ?s ?al :in $ ?n ?a :where [?e :name ?n] [?e :age ?a] [?e :last-name ?l] [?e :sex ?s] [?e :alias ?al]]"));
bench config "qpred1" (fun () ->
consume_rows (q_string (Lazy.force db) "[:find ?e ?s :where [?e :salary ?s] [(> ?s 50000)]]"));
bench config "qpred2" (fun () ->
consume_rows
(q_string
~inputs:[ Arg_scalar (Result_value (Int 50000)) ]
~inputs:[ Arg_scalar (Result_value (Int64 50000L)) ]
(Lazy.force db)
"[:find ?e ?s :in $ ?min-s :where [?e :salary ?s] [(> ?s ?min-s)]]"));
bench config "q2pred" (fun () ->
Expand Down
14 changes: 7 additions & 7 deletions bench/memory_scenario.ml
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ let person size i =
Entity
{ db_id = Some (Entity_id i)
; attrs =
[ "id", One_value (Int i)
[ "id", One_value (Int64 (Int64.of_int i))
; "name", One_value (String names.((i - 1) mod Array.length names))
; "age", One_value (Int ((i * 37) mod 100))
; "salary", One_value (Int ((i * 7919) mod 100_000))
; "age", One_value (Int64 (Int64.of_int ((i * 37) mod 100)))
; "salary", One_value (Int64 (Int64.of_int ((i * 7919) mod 100_000)))
; "status", One_value (String statuses.(i mod Array.length statuses))
; "score", One_value (Int ((i * 13) mod 10_000))
; "score", One_value (Int64 (Int64.of_int ((i * 13) mod 10_000)))
; "friend", One_value (Ref friend)
; "mentor", One_value (Ref mentor)
; ( "team"
Expand All @@ -104,7 +104,7 @@ let update_entity size i =
{ db_id = Some (Entity_id entity_id)
; attrs =
[ "status", One_value (String statuses.((i + 1) mod Array.length statuses))
; "score", One_value (Int ((i * 97) mod 10_000))
; "score", One_value (Int64 (Int64.of_int ((i * 97) mod 10_000)))
; "alias", Many_values [ String ("updated-" ^ string_of_int (i mod 128)) ]
]
}
Expand Down Expand Up @@ -152,8 +152,8 @@ let ref_attrs =
[ "friend"; "mentor"; "team" ]

let canonical_value attr = function
| Int value when List.mem attr ref_attrs -> "ref:" ^ string_of_int value
| Int value -> "int:" ^ string_of_int value
| Int64 value when List.mem attr ref_attrs -> "ref:" ^ Int64.to_string value
| Int64 value -> "int:" ^ Int64.to_string value
| Ref entity_id -> "ref:" ^ string_of_int entity_id
| String value -> "string:" ^ value
| Bool value -> "bool:" ^ string_of_bool value
Expand Down
8 changes: 4 additions & 4 deletions bench/query_profile.ml
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ let random_man rng i =
; "full-name", One_value (String (name ^ " " ^ last_name))
; "alias", Many_values alias_values
; "sex", One_value (Keyword (if next_int rng 2 = 0 then "male" else "female"))
; "age", One_value (Int (next_int rng 100))
; "salary", One_value (Int (next_int rng 100_000))
; "age", One_value (Int64 (Int64.of_int (next_int rng 100)))
; "salary", One_value (Int64 (Int64.of_int (next_int rng 100_000)))
]
}

Expand Down Expand Up @@ -302,13 +302,13 @@ let () =
(fun () ->
q_len_inputs
db
[ Arg_scalar (Result_value (Int 50000)) ]
[ Arg_scalar (Result_value (Int64 50000L)) ]
"[:find ?e ?s :in $ ?min-s :where [?e :salary ?s] [(> ?s ?min-s)]]");
measure
"qpred2-parsed"
iterations
(fun () ->
q db ~inputs:[ Arg_scalar (Result_value (Int 50000)) ] qpred2_query
q db ~inputs:[ Arg_scalar (Result_value (Int64 50000L)) ] qpred2_query
|> rows_len);
measure "q2pred" iterations (fun () -> q_len db "[:find ?e ?s :where [?e :name \"Ivan\"] [?e :salary ?s] [(> ?s 50000)]]");
measure "direct-q3-index-join" iterations (fun () -> direct_q3 db);
Expand Down
13 changes: 9 additions & 4 deletions examples/logseq_query_runner.ml
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,15 @@ let edn_keyword value = ":" ^ value

let rec edn_value = function
| Nil -> "nil"
| Int value -> string_of_int value
| Int64 value -> Int64.to_string value
| Float value -> string_of_float value
| String value -> Built_ins.print_query_value ~readably:true (String value)
| Symbol value -> value
| Bool true -> "true"
| Bool false -> "false"
| Keyword value -> edn_keyword value
| Uuid value -> "#uuid " ^ json_string value
| Instant value -> Int64.to_string value
| Instant value -> "#inst \"" ^ Util.string_of_instant_millis value ^ "\""
| Regex value -> "#\"" ^ String.escaped value ^ "\""
| Ref value -> string_of_int value
| List values -> "(" ^ String.concat " " (List.map edn_value values) ^ ")"
Expand Down Expand Up @@ -153,7 +153,7 @@ let schema_of_graph_edn_form = function
let rec graph_value_of_form = function
| QueryFormNil -> Nil
| QueryFormBool value -> Bool value
| QueryFormInt value -> Int value
| QueryFormInt value -> Int64 value
| QueryFormFloat value -> Float value
| QueryFormString value -> String value
| QueryFormKeyword value -> Keyword value
Expand All @@ -170,7 +170,12 @@ let rec graph_value_of_form = function
let datom_of_graph_edn_form = function
| QueryFormVector [ QueryFormInt e; attr; value; QueryFormInt tx; QueryFormBool added ]
| QueryFormList [ QueryFormInt e; attr; value; QueryFormInt tx; QueryFormBool added ] ->
datom ~e ~a:(Data_readers.attr_of_edn_key attr) ~v:(Util.normalize_value (graph_value_of_form value)) ~tx ~added ()
datom ~e:(Util.int64_to_int_exn "graph datom entity" e)
~a:(Data_readers.attr_of_edn_key attr)
~v:(Util.normalize_value (graph_value_of_form value))
~tx:(Util.int64_to_int_exn "graph datom tx" tx)
~added
()
| _ -> invalid_arg "graph EDN :datoms entries must be [e attr value tx added]"

let datoms_of_graph_edn_form = function
Expand Down
25 changes: 14 additions & 11 deletions examples/logseq_sqlite_storage.ml
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ let schema_to_transit schema =

let rec value_to_transit = function
| Nil -> Transit.Null
| Int value -> Transit.Int value
| Int64 value -> Transit.Int64 value
| Float value -> Transit.Float value
| String value -> Transit.String value
| Symbol value -> Transit.Symbol value
Expand Down Expand Up @@ -401,16 +401,12 @@ let rec value_of_transit = function
| Transit.Null -> Nil
| Transit.Bool value -> Bool value
| Transit.String value -> String value
| Transit.Int value -> Int value
| Transit.Int64 value ->
if value >= Int64.of_int min_int && value <= Int64.of_int max_int then
Int (Int64.to_int value)
else
Instant value
| Transit.Int value -> Int64 (Int64.of_int value)
| Transit.Int64 value -> Int64 value
| Transit.Float value -> Float value
| Transit.Binary value -> String value
| Transit.Big_decimal value -> Float (float_of_string value)
| Transit.Big_int value -> Transit.Int64 (Int64.of_string value) |> value_of_transit
| Transit.Big_int value -> Int64 (Int64.of_string value)
| Transit.Date value -> Instant value
| Transit.Uuid value -> Uuid value
| Transit.Uri value -> String value
Expand Down Expand Up @@ -899,18 +895,25 @@ let int_of_shallow_string text =
| Some value -> value
| None -> invalid_arg ("invalid Logseq integer value: " ^ text)

let int64_of_shallow_string text =
match Int64.of_string_opt text with
| Some value -> value
| None -> invalid_arg ("invalid Logseq integer value: " ^ text)

let rec logseq_value_of_shallow_json reader = function
| `Null -> Nil
| `Bool value -> Bool value
| `Int value -> Int value
| `Intlit value -> Int (int_of_shallow_string value)
| `Int value -> Int64 (Int64.of_int value)
| `Intlit value -> Int64 (int64_of_shallow_string value)
| `Float value -> Float value
| `Floatlit value -> Float (float_of_string value)
| `String text ->
let text = shallow_decode_string reader text in
if starts_with "~:" text then Keyword (String.sub text 2 (String.length text - 2))
else if starts_with "~$" text then Symbol (String.sub text 2 (String.length text - 2))
else if starts_with "~i" text then Int (int_of_shallow_string (String.sub text 2 (String.length text - 2)))
else if starts_with "~i" text then Int64 (int64_of_shallow_string (String.sub text 2 (String.length text - 2)))
else if starts_with "~n" text then Int64 (int64_of_shallow_string (String.sub text 2 (String.length text - 2)))
else if starts_with "~m" text then Instant (int64_of_shallow_string (String.sub text 2 (String.length text - 2)))
else if starts_with "~u" text then Uuid (String.sub text 2 (String.length text - 2))
else if starts_with "~?" text then
(match String.sub text 2 (String.length text - 2) with
Expand Down
2 changes: 1 addition & 1 deletion examples/sqlite_storage_example.ml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ let rec edn_of_pulled_value = function

and edn_of_pulled_entity entity =
let attrs =
(Keyword "db/id", Pulled_scalar (Int entity.pulled_id)) :: entity.pulled_attrs
(Keyword "db/id", Pulled_scalar (Int64 (Int64.of_int entity.pulled_id))) :: entity.pulled_attrs
|> List.sort (fun (left, _) (right, _) -> compare left right)
|> List.map (fun (key, value) ->
Built_ins.print_query_value ~readably:true key ^ " " ^ edn_of_pulled_value value)
Expand Down
Loading
Loading