changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/rdb/sst.lisp

changeset 698: 96958d3eb5b0
parent: e2e5c4831389
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; rdb/sst.lisp --- Sorted Sequence Tables
2 
3 ;; SST is the on-disk format for RocksDB data. Keys are (usually)
4 ;; sorted. An SST-FILE can be generated independently of a database
5 ;; and ingested on-demand.
6 
7 ;;; Commentary:
8 
9 ;; This file defines the high-level SST-FILE-WRITER object which
10 ;; implements the relevant protocols for generating SST Files on the
11 ;; fly. To 'read' an SST file you should ingest it into an open
12 ;; database
13 
14 ;;; Code:
15 (in-package :rdb)
16 
17 (defstruct (sst-file-writer (:constructor %make-sst-file-writer (sap)))
18  (sap nil :type (or null alien)))
19 
20 (defun make-sst-file-writer (&optional comparator
21  (env-opts (rocksdb-envoptions-create))
22  (io-opts (rocksdb-options-create)))
23  (%make-sst-file-writer
24  (if comparator
25  (create-sst-writer-with-comparator-raw comparator env-opts io-opts)
26  (create-sst-writer-raw env-opts io-opts))))
27 
28 (defun sst-file-size (writer)
29  (declare (sst-file-writer writer))
30  (sst-file-size-raw (sst-file-writer-sap writer)))
31 
32 (defun open-sst (writer path)
33  (declare (sst-file-writer writer))
34  (open-sst-writer-raw (sst-file-writer-sap writer) path))
35 
36 (defun finish-sst (writer)
37  (declare (sst-file-writer writer))
38  (finish-sst-writer-raw (sst-file-writer-sap writer)))
39 
40 (defun destroy-sst (writer)
41  (declare (sst-file-writer writer))
42  (with-slots (sap) writer
43  (unless (null sap)
44  (destroy-sst-writer-raw sap)
45  (setf sap nil))))
46 
47 (defmethod print-object ((self sst-file-writer) stream)
48  (print-unreadable-object (self stream :type t :identity t)
49  (format stream ":size ~A" (when (sst-file-writer-sap self) (sst-file-size self)))))
50 
51 (defmethod put-key ((self sst-file-writer) key val)
52  (sst-put-raw (sst-file-writer-sap self) key val))
53 
54 (defmethod put-key ((self sst-file-writer) (key simple-string) (val simple-string))
55  (sst-put-str-raw (sst-file-writer-sap self) key val))
56 
57 (defmethod put-kv ((self sst-file-writer) (kv rdb-kv))
58  (sst-put-raw (sst-file-writer-sap self)
59  (rdb-key kv) (rdb-val kv)))
60 
61 (defmethod delete-key ((self sst-file-writer) key &key)
62  (sst-delete-raw (sst-file-writer-sap self) key))
63 
64 (defmethod delete-key-ts ((self sst-file-writer) key ts)
65  (sst-delete-ts-raw (sst-file-writer-sap self) key ts))
66 
67 (defmethod delete-key-range ((self sst-file-writer) start end &key)
68  (sst-delete-range-raw (sst-file-writer-sap self) start end))
69 
70 (defmethod put-key-ts ((self sst-file-writer) key val ts)
71  (sst-put-ts-raw (sst-file-writer-sap self) key val ts))