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 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. 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 17 (defstruct (sst-file-writer (:constructor %make-sst-file-writer (sap))) 18 (sap nil :type (or null alien))) 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 25 (create-sst-writer-with-comparator-raw comparator env-opts io-opts) 26 (create-sst-writer-raw env-opts io-opts)))) 28 (defun sst-file-size (writer) 29 (declare (sst-file-writer writer)) 30 (sst-file-size-raw (sst-file-writer-sap writer))) 32 (defun open-sst (writer path) 33 (declare (sst-file-writer writer)) 34 (open-sst-writer-raw (sst-file-writer-sap writer) path)) 36 (defun finish-sst (writer) 37 (declare (sst-file-writer writer)) 38 (finish-sst-writer-raw (sst-file-writer-sap writer))) 40 (defun destroy-sst (writer) 41 (declare (sst-file-writer writer)) 42 (with-slots (sap) writer 44 (destroy-sst-writer-raw sap) 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))))) 51 (defmethod put-key ((self sst-file-writer) key val) 52 (sst-put-raw (sst-file-writer-sap self) key val)) 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)) 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))) 61 (defmethod delete-key ((self sst-file-writer) key &key) 62 (sst-delete-raw (sst-file-writer-sap self) key)) 64 (defmethod delete-key-ts ((self sst-file-writer) key ts) 65 (sst-delete-ts-raw (sst-file-writer-sap self) key ts)) 67 (defmethod delete-key-range ((self sst-file-writer) start end &key) 68 (sst-delete-range-raw (sst-file-writer-sap self) start end)) 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))