Minimal SQLite key-value store for OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix(E320): shorten long identifiers to stay within 4-underscore limit

+11 -12
+9 -9
lib/sqlite.ml
··· 54 54 in 55 55 (key, value) 56 56 57 - let make_prefix key = encode_u32_be (String.length key) ^ key 57 + let prefix key = encode_u32_be (String.length key) ^ key 58 58 59 59 (* Database operations *) 60 60 ··· 100 100 { pager; index; tables = Hashtbl.create 8 } 101 101 102 102 let get t key = 103 - let prefix = make_prefix key in 103 + let prefix = prefix key in 104 104 match Btree.Index.by_prefix t.index prefix with 105 105 | None -> None 106 106 | Some entry -> ··· 108 108 if found_key = key then Some value else None 109 109 110 110 let put t key value = 111 - let prefix = make_prefix key in 111 + let prefix = prefix key in 112 112 (* Delete any existing entry for this key *) 113 113 Btree.Index.delete_by_prefix t.index prefix; 114 114 (* Insert new entry *) ··· 116 116 Btree.Index.insert t.index entry 117 117 118 118 let delete t key = 119 - let prefix = make_prefix key in 119 + let prefix = prefix key in 120 120 Btree.Index.delete_by_prefix t.index prefix 121 121 122 122 let mem t key = 123 - let prefix = make_prefix key in 123 + let prefix = prefix key in 124 124 match Btree.Index.by_prefix t.index prefix with 125 125 | None -> false 126 126 | Some entry -> ··· 187 187 { parent; name; index } 188 188 189 189 let get t key = 190 - let prefix = make_prefix key in 190 + let prefix = prefix key in 191 191 match Btree.Index.by_prefix t.index prefix with 192 192 | None -> None 193 193 | Some entry -> ··· 195 195 if found_key = key then Some value else None 196 196 197 197 let put t key value = 198 - let prefix = make_prefix key in 198 + let prefix = prefix key in 199 199 Btree.Index.delete_by_prefix t.index prefix; 200 200 let entry = encode_entry key value in 201 201 Btree.Index.insert t.index entry 202 202 203 203 let delete t key = 204 - let prefix = make_prefix key in 204 + let prefix = prefix key in 205 205 Btree.Index.delete_by_prefix t.index prefix 206 206 207 207 let mem t key = 208 - let prefix = make_prefix key in 208 + let prefix = prefix key in 209 209 match Btree.Index.by_prefix t.index prefix with 210 210 | None -> false 211 211 | Some entry ->
+2 -3
test/test_sqlite.ml
··· 455 455 456 456 (* Regression tests based on SQLite CVE patterns *) 457 457 458 - let test_cve_like_overflow_key_length () = 458 + let test_cve_key_overflow () = 459 459 with_temp_db @@ fun _fs db -> 460 460 (* Ensure large key doesn't cause integer overflow in length encoding *) 461 461 let key = String.make 500 'x' in ··· 537 537 Alcotest.test_case "many tables" `Quick test_many_tables; 538 538 ]; 539 539 [ 540 - Alcotest.test_case "overflow key length" `Quick 541 - test_cve_like_overflow_key_length; 540 + Alcotest.test_case "overflow key length" `Quick test_cve_key_overflow; 542 541 Alcotest.test_case "boundary conditions" `Quick 543 542 test_cve_like_boundary_conditions; 544 543 ];