Packages
rocksdb
2.6.0
3.1.2
3.1.1
3.1.0
3.0.0
2.6.2
2.6.1
retired
2.6.0
retired
2.5.0
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
0.26.2
0.26.1
0.26.0
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
RocksDB for Erlang
Retired package: Release invalid - Use 2.6.1 instead
Current section
Files
Jump to
Current section
Files
c_src/atoms.h
// Copyright (c) 2011-2013 Basho Technologies, Inc. All Rights Reserved.
// Copyright (c) 2016-2026 Benoit Chesneau
//
// This file is provided to you under the Apache License,
// Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain
// a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
#pragma once
#ifndef ATOMS_H
#define ATOMS_H
#include "erl_nif.h"
namespace erocksdb {
// Atoms (initialized in on_load)
// Related to Erlang
extern ERL_NIF_TERM ATOM_TRUE;
extern ERL_NIF_TERM ATOM_FALSE;
extern ERL_NIF_TERM ATOM_OK;
extern ERL_NIF_TERM ATOM_ERROR;
extern ERL_NIF_TERM ATOM_EINVAL;
extern ERL_NIF_TERM ATOM_BADARG;
extern ERL_NIF_TERM ATOM_NOT_FOUND;
extern ERL_NIF_TERM ATOM_INC;
extern ERL_NIF_TERM ATOM_DEC;
extern ERL_NIF_TERM ATOM_CORRUPTION;
extern ERL_NIF_TERM ATOM_UNKNOWN_STATUS_ERROR;
extern ERL_NIF_TERM ATOM_UNDEFINED;
// related to envs
extern ERL_NIF_TERM ATOM_DEFAULT;
extern ERL_NIF_TERM ATOM_MEMENV;
// cache
extern ERL_NIF_TERM ATOM_LRU;
extern ERL_NIF_TERM ATOM_CLOCK;
extern ERL_NIF_TERM ATOM_USAGE;
extern ERL_NIF_TERM ATOM_PINNED_USAGE;
extern ERL_NIF_TERM ATOM_CAPACITY;
extern ERL_NIF_TERM ATOM_STRICT_CAPACITY;
extern ERL_NIF_TERM ATOM_FLUSH_ONLY;
extern ERL_NIF_TERM ATOM_DISABLE;
// generic
extern ERL_NIF_TERM ATOM_DEFAULT_COLUMN_FAMILY;
// Related to CFOptions
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_SIZE_MB_FOR_POINT_LOOKUP;
extern ERL_NIF_TERM ATOM_MEMTABLE_MEMORY_BUDGET;
extern ERL_NIF_TERM ATOM_WRITE_BUFFER_SIZE;
extern ERL_NIF_TERM ATOM_MAX_WRITE_BUFFER_NUMBER;
extern ERL_NIF_TERM ATOM_MIN_WRITE_BUFFER_NUMBER_TO_MERGE;
extern ERL_NIF_TERM ATOM_COMPRESSION;
// CFOptions blob
extern ERL_NIF_TERM ATOM_ENABLE_BLOB_FILES;
extern ERL_NIF_TERM ATOM_MIN_BLOB_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_FILE_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_COMPRESSION_TYPE;
extern ERL_NIF_TERM ATOM_ENABLE_BLOB_GC;
extern ERL_NIF_TERM ATOM_BLOB_GC_AGE_CUTOFF;
extern ERL_NIF_TERM ATOM_BLOB_GC_FORCE_THRESHOLD;
extern ERL_NIF_TERM ATOM_BLOB_COMPACTION_READAHEAD_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_FILE_STARTING_LEVEL;
extern ERL_NIF_TERM ATOM_BLOB_CACHE;
extern ERL_NIF_TERM ATOM_PREPOPULATE_BLOB_CACHE;
// Related to CFOptions.CompressionOptions
extern ERL_NIF_TERM ATOM_BOTTOMMOST_COMPRESSION;
extern ERL_NIF_TERM ATOM_BOTTOMMOST_COMPRESSION_OPTS;
extern ERL_NIF_TERM ATOM_COMPRESSION_OPTS;
extern ERL_NIF_TERM ATOM_WINDOW_BITS;
extern ERL_NIF_TERM ATOM_LEVEL;
extern ERL_NIF_TERM ATOM_STRATEGY;
extern ERL_NIF_TERM ATOM_MAX_DICT_BYTES;
extern ERL_NIF_TERM ATOM_ZSTD_MAX_TRAIN_BYTES;
extern ERL_NIF_TERM ATOM_NUM_LEVELS;
extern ERL_NIF_TERM ATOM_LEVEL0_FILE_NUM_COMPACTION_TRIGGER;
extern ERL_NIF_TERM ATOM_LEVEL0_SLOWDOWN_WRITES_TRIGGER;
extern ERL_NIF_TERM ATOM_LEVEL0_STOP_WRITES_TRIGGER;
extern ERL_NIF_TERM ATOM_TARGET_FILE_SIZE_BASE;
extern ERL_NIF_TERM ATOM_TARGET_FILE_SIZE_MULTIPLIER;
extern ERL_NIF_TERM ATOM_MAX_BYTES_FOR_LEVEL_BASE;
extern ERL_NIF_TERM ATOM_MAX_BYTES_FOR_LEVEL_MULTIPLIER;
extern ERL_NIF_TERM ATOM_MAX_COMPACTION_BYTES;
extern ERL_NIF_TERM ATOM_ARENA_BLOCK_SIZE;
extern ERL_NIF_TERM ATOM_DISABLE_AUTO_COMPACTIONS;
extern ERL_NIF_TERM ATOM_COMPACTION_STYLE;
extern ERL_NIF_TERM ATOM_COMPACTION_PRI;
extern ERL_NIF_TERM ATOM_FILTER_DELETES;
extern ERL_NIF_TERM ATOM_MAX_SEQUENTIAL_SKIP_IN_ITERATIONS;
extern ERL_NIF_TERM ATOM_INPLACE_UPDATE_SUPPORT;
extern ERL_NIF_TERM ATOM_INPLACE_UPDATE_NUM_LOCKS;
extern ERL_NIF_TERM ATOM_TABLE_FACTORY_BLOCK_CACHE_SIZE;
extern ERL_NIF_TERM ATOM_IN_MEMORY_MODE;
extern ERL_NIF_TERM ATOM_IN_MEMORY;
extern ERL_NIF_TERM ATOM_BLOCK_BASED_TABLE_OPTIONS;
extern ERL_NIF_TERM ATOM_ALLOW_CONCURRENT_MEMTABLE_WRITE;
extern ERL_NIF_TERM ATOM_ENABLE_WRITE_THREAD_ADAPTATIVE_YIELD;
extern ERL_NIF_TERM ATOM_LEVEL_COMPACTION_DYNAMIC_LEVEL_BYTES;
extern ERL_NIF_TERM ATOM_OPTIMIZE_FILTERS_FOR_HITS;
extern ERL_NIF_TERM ATOM_PREFIX_EXTRACTOR;
// Related to DBOptions
extern ERL_NIF_TERM ATOM_TOTAL_THREADS;
extern ERL_NIF_TERM ATOM_CREATE_IF_MISSING;
extern ERL_NIF_TERM ATOM_CREATE_MISSING_COLUMN_FAMILIES;
extern ERL_NIF_TERM ATOM_ERROR_IF_EXISTS;
extern ERL_NIF_TERM ATOM_PARANOID_CHECKS;
extern ERL_NIF_TERM ATOM_MAX_OPEN_FILES;
extern ERL_NIF_TERM ATOM_MAX_TOTAL_WAL_SIZE;
extern ERL_NIF_TERM ATOM_USE_FSYNC;
extern ERL_NIF_TERM ATOM_DB_PATHS;
extern ERL_NIF_TERM ATOM_DB_LOG_DIR;
extern ERL_NIF_TERM ATOM_WAL_DIR;
extern ERL_NIF_TERM ATOM_DELETE_OBSOLETE_FILES_PERIOD_MICROS;
extern ERL_NIF_TERM ATOM_MAX_BACKGROUND_JOBS;
extern ERL_NIF_TERM ATOM_MAX_BACKGROUND_COMPACTIONS;
extern ERL_NIF_TERM ATOM_MAX_BACKGROUND_FLUSHES;
extern ERL_NIF_TERM ATOM_MAX_LOG_FILE_SIZE;
extern ERL_NIF_TERM ATOM_LOG_FILE_TIME_TO_ROLL;
extern ERL_NIF_TERM ATOM_KEEP_LOG_FILE_NUM;
extern ERL_NIF_TERM ATOM_MAX_MANIFEST_FILE_SIZE;
extern ERL_NIF_TERM ATOM_TABLE_CACHE_NUMSHARDBITS;
extern ERL_NIF_TERM ATOM_WAL_TTL_SECONDS;
extern ERL_NIF_TERM ATOM_WAL_SIZE_LIMIT_MB;
extern ERL_NIF_TERM ATOM_MANIFEST_PREALLOCATION_SIZE;
extern ERL_NIF_TERM ATOM_ALLOW_MMAP_READS;
extern ERL_NIF_TERM ATOM_ALLOW_MMAP_WRITES;
extern ERL_NIF_TERM ATOM_IS_FD_CLOSE_ON_EXEC;
extern ERL_NIF_TERM ATOM_STATS_DUMP_PERIOD_SEC;
extern ERL_NIF_TERM ATOM_ADVISE_RANDOM_ON_OPEN;
extern ERL_NIF_TERM ATOM_COMPACTION_READAHEAD_SIZE;
extern ERL_NIF_TERM ATOM_SKIP_STATS_UPDATE_ON_DB_OPEN;
extern ERL_NIF_TERM ATOM_WAL_RECOVERY_MODE;
extern ERL_NIF_TERM ATOM_USE_ADAPTIVE_MUTEX;
extern ERL_NIF_TERM ATOM_BYTES_PER_SYNC;
extern ERL_NIF_TERM ATOM_DB_WRITE_BUFFER_SIZE;
extern ERL_NIF_TERM ATOM_RATE_LIMITER;
extern ERL_NIF_TERM ATOM_SST_FILE_MANAGER;
extern ERL_NIF_TERM ATOM_WRITE_BUFFER_MANAGER;
extern ERL_NIF_TERM ATOM_MAX_SUBCOMPACTIONS;
extern ERL_NIF_TERM ATOM_MANUAL_WAL_FLUSH;
extern ERL_NIF_TERM ATOM_ATOMIC_FLUSH;
extern ERL_NIF_TERM ATOM_USE_DIRECT_READS;
extern ERL_NIF_TERM ATOM_USE_DIRECT_IO_FOR_FLUSH_AND_COMPACTION;
extern ERL_NIF_TERM ATOM_ENABLE_PIPELINED_WRITE;
extern ERL_NIF_TERM ATOM_UNORDERED_WRITE;
extern ERL_NIF_TERM ATOM_TWO_WRITE_QUEUES;
// Related to BlockBasedTable Options
extern ERL_NIF_TERM ATOM_NO_BLOCK_CACHE;
extern ERL_NIF_TERM ATOM_BLOCK_SIZE;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_SIZE;
extern ERL_NIF_TERM ATOM_BLOOM_FILTER_POLICY;
extern ERL_NIF_TERM ATOM_FORMAT_VERSION;
extern ERL_NIF_TERM ATOM_CACHE_INDEX_AND_FILTER_BLOCKS;
// Related to ReadTier
extern ERL_NIF_TERM ATOM_READ_TIER;
extern ERL_NIF_TERM ATOM_READ_ALL_TIER;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_TIER;
extern ERL_NIF_TERM ATOM_PERSISTED_TIER;
extern ERL_NIF_TERM ATOM_MEMTABLE_TIER;
// Related to Read Options
extern ERL_NIF_TERM ATOM_VERIFY_CHECKSUMS;
extern ERL_NIF_TERM ATOM_FILL_CACHE;
extern ERL_NIF_TERM ATOM_ITERATE_UPPER_BOUND;
extern ERL_NIF_TERM ATOM_ITERATE_LOWER_BOUND;
extern ERL_NIF_TERM ATOM_TAILING;
extern ERL_NIF_TERM ATOM_TOTAL_ORDER_SEEK;
extern ERL_NIF_TERM ATOM_PREFIX_SAME_AS_START;
extern ERL_NIF_TERM ATOM_SNAPSHOT;
extern ERL_NIF_TERM ATOM_BAD_SNAPSHOT;
extern ERL_NIF_TERM ATOM_AUTO_REFRESH_ITERATOR_WITH_SNAPSHOT;
extern ERL_NIF_TERM ATOM_AUTO_READAHEAD_SIZE;
extern ERL_NIF_TERM ATOM_ALLOW_UNPREPARED_VALUE;
extern ERL_NIF_TERM ATOM_READAHEAD_SIZE;
extern ERL_NIF_TERM ATOM_ASYNC_IO;
// Related to Write Options
extern ERL_NIF_TERM ATOM_SYNC;
extern ERL_NIF_TERM ATOM_DISABLE_WAL;
extern ERL_NIF_TERM ATOM_IGNORE_MISSING_COLUMN_FAMILIES;
extern ERL_NIF_TERM ATOM_NO_SLOWDOWN;
extern ERL_NIF_TERM ATOM_LOW_PRI;
// Related to Write Actions
extern ERL_NIF_TERM ATOM_CLEAR;
extern ERL_NIF_TERM ATOM_PUT;
extern ERL_NIF_TERM ATOM_MERGE;
extern ERL_NIF_TERM ATOM_DELETE;
extern ERL_NIF_TERM ATOM_SINGLE_DELETE;
// Compact Range Options
extern ERL_NIF_TERM ATOM_EXCLUSIVE_MANUAL_COMPACTION;
extern ERL_NIF_TERM ATOM_CHANGE_LEVEL;
extern ERL_NIF_TERM ATOM_TARGET_LEVEL;
extern ERL_NIF_TERM ATOM_ALLOW_WRITE_STALL;
extern ERL_NIF_TERM ATOM_BOTTOMMOST_LEVEL_COMPACTION;
extern ERL_NIF_TERM ATOM_SKIP;
extern ERL_NIF_TERM ATOM_IF_HAVE_COMPACTION_FILTER;
extern ERL_NIF_TERM ATOM_FORCE;
extern ERL_NIF_TERM ATOM_FORCE_OPTIMIZED;
// Compaction Fifo Options
// Related to CompactionOptionsFIFO
extern ERL_NIF_TERM ATOM_COMPACTION_OPTIONS_FIFO;
extern ERL_NIF_TERM ATOM_MAX_TABLE_FILE_SIZE;
extern ERL_NIF_TERM ATOM_ALLOW_COMPACTION;
extern ERL_NIF_TERM ATOM_TTL;
// Related to FlushOptions
extern ERL_NIF_TERM ATOM_WAIT;
// Related to Iterator Actions
extern ERL_NIF_TERM ATOM_FIRST;
extern ERL_NIF_TERM ATOM_LAST;
extern ERL_NIF_TERM ATOM_NEXT;
extern ERL_NIF_TERM ATOM_PREV;
extern ERL_NIF_TERM ATOM_SEEK_FOR_PREV;
extern ERL_NIF_TERM ATOM_SEEK;
// Related to Iterator Value to be retrieved
extern ERL_NIF_TERM ATOM_KEYS_ONLY;
// Related to Compression Type
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_SNAPPY;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_ZLIB;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_BZIP2;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_LZ4;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_LZ4H;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_ZSTD;
extern ERL_NIF_TERM ATOM_COMPRESSION_TYPE_NONE;
// Related to Compaction Style
extern ERL_NIF_TERM ATOM_COMPACTION_STYLE_LEVEL;
extern ERL_NIF_TERM ATOM_COMPACTION_STYLE_UNIVERSAL;
extern ERL_NIF_TERM ATOM_COMPACTION_STYLE_FIFO;
extern ERL_NIF_TERM ATOM_COMPACTION_STYLE_NONE;
// Related to Compaction Priority
extern ERL_NIF_TERM ATOM_COMPACTION_PRI_COMPENSATED_SIZE;
extern ERL_NIF_TERM ATOM_COMPACTION_PRI_OLDEST_LARGEST_SEQ_FIRST;
extern ERL_NIF_TERM ATOM_COMPACTION_PRI_OLDEST_SMALLEST_SEQ_FIRST;
// Related to WAL Recovery Mode
extern ERL_NIF_TERM ATOM_WAL_TOLERATE_CORRUPTED_TAIL_RECORDS;
extern ERL_NIF_TERM ATOM_WAL_ABSOLUTE_CONSISTENCY;
extern ERL_NIF_TERM ATOM_WAL_POINT_IN_TIME_RECOVERY;
extern ERL_NIF_TERM ATOM_WAL_SKIP_ANY_CORRUPTED_RECORDS;
// Related to Error Codes
extern ERL_NIF_TERM ATOM_ERROR_DB_OPEN;
extern ERL_NIF_TERM ATOM_ERROR_DB_PUT;
extern ERL_NIF_TERM ATOM_ERROR_DB_DELETE;
extern ERL_NIF_TERM ATOM_ERROR_DB_WRITE;
extern ERL_NIF_TERM ATOM_ERROR_DB_DESTROY;
extern ERL_NIF_TERM ATOM_ERROR_DB_REPAIR;
extern ERL_NIF_TERM ATOM_BAD_WRITE_ACTION;
extern ERL_NIF_TERM ATOM_KEEP_RESOURCE_FAILED;
extern ERL_NIF_TERM ATOM_ITERATOR_CLOSED;
extern ERL_NIF_TERM ATOM_INVALID_ITERATOR;
extern ERL_NIF_TERM ATOM_ERROR_INCOMPLETE;
extern ERL_NIF_TERM ATOM_ERROR_BACKUP_ENGINE_OPEN;
// Related to NIF initialize parameters
extern ERL_NIF_TERM ATOM_WRITE_THREADS;
// thread priority
extern ERL_NIF_TERM ATOM_PRIORITY_HIGH;
extern ERL_NIF_TERM ATOM_PRIORITY_LOW;
extern ERL_NIF_TERM ATOM_ENV;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE;
// backup info
extern ERL_NIF_TERM ATOM_BACKUP_INFO_ID;
extern ERL_NIF_TERM ATOM_BACKUP_INFO_TIMESTAMP;
extern ERL_NIF_TERM ATOM_BACKUP_INFO_SIZE;
extern ERL_NIF_TERM ATOM_BACKUP_INFO_NUMBER_FILES;
extern ERL_NIF_TERM ATOM_MERGE_OPERATOR;
extern ERL_NIF_TERM ATOM_ERLANG_MERGE_OPERATOR;
extern ERL_NIF_TERM ATOM_BITSET_MERGE_OPERATOR;
extern ERL_NIF_TERM ATOM_COUNTER_MERGE_OPERATOR;
extern ERL_NIF_TERM ATOM_MERGE_INT_ADD;
extern ERL_NIF_TERM ATOM_MERGE_LIST_APPEND;
extern ERL_NIF_TERM ATOM_MERGE_LIST_SUBSTRACT;
extern ERL_NIF_TERM ATOM_MERGE_LIST_SET;
extern ERL_NIF_TERM ATOM_MERGE_LIST_DELETE;
extern ERL_NIF_TERM ATOM_MERGE_LIST_INSERT;
extern ERL_NIF_TERM ATOM_MERGE_BINARY_APPEND;
extern ERL_NIF_TERM ATOM_MERGE_BINARY_REPLACE;
extern ERL_NIF_TERM ATOM_MERGE_BINARY_INSERT;
extern ERL_NIF_TERM ATOM_MERGE_BINARY_ERASE;
// Posting List Merge Operator
extern ERL_NIF_TERM ATOM_POSTING_LIST_MERGE_OPERATOR;
extern ERL_NIF_TERM ATOM_POSTING_ADD;
extern ERL_NIF_TERM ATOM_POSTING_DELETE;
// Posting List NIF helpers
extern ERL_NIF_TERM ATOM_ACTIVE;
extern ERL_NIF_TERM ATOM_TOMBSTONE;
extern ERL_NIF_TERM ATOM_FIXED_PREFIX_TRANSFORM;
extern ERL_NIF_TERM ATOM_CAPPED_PREFIX_TRANSFORM;
extern ERL_NIF_TERM ATOM_COMPARATOR;
extern ERL_NIF_TERM ATOM_BYTEWISE_COMPARATOR;
extern ERL_NIF_TERM ATOM_REVERSE_BYTEWISE_COMPARATOR;
// Compaction Filter
extern ERL_NIF_TERM ATOM_COMPACTION_FILTER;
extern ERL_NIF_TERM ATOM_RULES;
extern ERL_NIF_TERM ATOM_HANDLER;
extern ERL_NIF_TERM ATOM_BATCH_SIZE;
extern ERL_NIF_TERM ATOM_TIMEOUT;
// Compaction Filter Rule Types
extern ERL_NIF_TERM ATOM_KEY_PREFIX;
extern ERL_NIF_TERM ATOM_KEY_SUFFIX;
extern ERL_NIF_TERM ATOM_KEY_CONTAINS;
extern ERL_NIF_TERM ATOM_VALUE_EMPTY;
extern ERL_NIF_TERM ATOM_VALUE_PREFIX;
extern ERL_NIF_TERM ATOM_TTL_FROM_KEY;
extern ERL_NIF_TERM ATOM_ALWAYS_DELETE;
// Compaction Filter Decisions
extern ERL_NIF_TERM ATOM_KEEP;
extern ERL_NIF_TERM ATOM_REMOVE;
extern ERL_NIF_TERM ATOM_CHANGE_VALUE;
// range
// range
extern ERL_NIF_TERM ATOM_NONE;
extern ERL_NIF_TERM ATOM_INCLUDE_MEMTABLES;
extern ERL_NIF_TERM ATOM_INCLUDE_FILES;
extern ERL_NIF_TERM ATOM_INCLUDE_BOTH;
// write buffer manager
extern ERL_NIF_TERM ATOM_ENABLED;
extern ERL_NIF_TERM ATOM_BUFFER_SIZE;
extern ERL_NIF_TERM ATOM_MUTABLE_MEMTABLE_MEMORY_USAGE;
extern ERL_NIF_TERM ATOM_MEMORY_USAGE;
// sst file manager
extern ERL_NIF_TERM ATOM_DELETE_RATE_BYTES_PER_SEC;
extern ERL_NIF_TERM ATOM_MAX_TRASH_DB_RATIO;
extern ERL_NIF_TERM ATOM_BYTES_MAX_DELETE_CHUNK;
extern ERL_NIF_TERM ATOM_MAX_ALLOWED_SPACE_USAGE;
extern ERL_NIF_TERM ATOM_COMPACTION_BUFFER_SIZE;
extern ERL_NIF_TERM ATOM_IS_MAX_ALLOWED_SPACE_REACHED;
extern ERL_NIF_TERM ATOM_MAX_ALLOWED_SPACE_REACHED_INCLUDING_COMPACTIONS;
extern ERL_NIF_TERM ATOM_TOTAL_SIZE;
extern ERL_NIF_TERM ATOM_TOTAL_TRASH_SIZE;
// sst file writer
extern ERL_NIF_TERM ATOM_WITH_FILE_INFO;
extern ERL_NIF_TERM ATOM_FILE_PATH;
extern ERL_NIF_TERM ATOM_SMALLEST_KEY;
extern ERL_NIF_TERM ATOM_LARGEST_KEY;
extern ERL_NIF_TERM ATOM_SMALLEST_RANGE_DEL_KEY;
extern ERL_NIF_TERM ATOM_LARGEST_RANGE_DEL_KEY;
extern ERL_NIF_TERM ATOM_FILE_SIZE;
extern ERL_NIF_TERM ATOM_NUM_ENTRIES;
extern ERL_NIF_TERM ATOM_NUM_RANGE_DEL_ENTRIES;
extern ERL_NIF_TERM ATOM_SEQUENCE_NUMBER;
// ingest external file
extern ERL_NIF_TERM ATOM_MOVE_FILES;
extern ERL_NIF_TERM ATOM_FAILED_MOVE_FALL_BACK_TO_COPY;
extern ERL_NIF_TERM ATOM_SNAPSHOT_CONSISTENCY;
extern ERL_NIF_TERM ATOM_ALLOW_GLOBAL_SEQNO;
extern ERL_NIF_TERM ATOM_ALLOW_BLOCKING_FLUSH;
extern ERL_NIF_TERM ATOM_INGEST_BEHIND;
extern ERL_NIF_TERM ATOM_VERIFY_CHECKSUMS_BEFORE_INGEST;
extern ERL_NIF_TERM ATOM_VERIFY_CHECKSUMS_READAHEAD_SIZE;
extern ERL_NIF_TERM ATOM_VERIFY_FILE_CHECKSUM;
extern ERL_NIF_TERM ATOM_FAIL_IF_NOT_BOTTOMMOST_LEVEL;
extern ERL_NIF_TERM ATOM_ALLOW_DB_GENERATED_FILES;
// sst file reader / table properties
extern ERL_NIF_TERM ATOM_DATA_SIZE;
extern ERL_NIF_TERM ATOM_INDEX_SIZE;
extern ERL_NIF_TERM ATOM_INDEX_PARTITIONS;
extern ERL_NIF_TERM ATOM_TOP_LEVEL_INDEX_SIZE;
extern ERL_NIF_TERM ATOM_FILTER_SIZE;
extern ERL_NIF_TERM ATOM_RAW_KEY_SIZE;
extern ERL_NIF_TERM ATOM_RAW_VALUE_SIZE;
extern ERL_NIF_TERM ATOM_NUM_DATA_BLOCKS;
extern ERL_NIF_TERM ATOM_NUM_DELETIONS;
extern ERL_NIF_TERM ATOM_NUM_MERGE_OPERANDS;
extern ERL_NIF_TERM ATOM_NUM_RANGE_DELETIONS;
extern ERL_NIF_TERM ATOM_FORMAT_VERSION;
extern ERL_NIF_TERM ATOM_FIXED_KEY_LEN;
extern ERL_NIF_TERM ATOM_COLUMN_FAMILY_ID;
extern ERL_NIF_TERM ATOM_COLUMN_FAMILY_NAME;
extern ERL_NIF_TERM ATOM_FILTER_POLICY_NAME;
extern ERL_NIF_TERM ATOM_COMPARATOR_NAME;
extern ERL_NIF_TERM ATOM_MERGE_OPERATOR_NAME;
extern ERL_NIF_TERM ATOM_PREFIX_EXTRACTOR_NAME;
extern ERL_NIF_TERM ATOM_PROPERTY_COLLECTORS_NAMES;
extern ERL_NIF_TERM ATOM_COMPRESSION_NAME;
extern ERL_NIF_TERM ATOM_COMPRESSION_OPTIONS;
extern ERL_NIF_TERM ATOM_CREATION_TIME;
extern ERL_NIF_TERM ATOM_OLDEST_KEY_TIME;
extern ERL_NIF_TERM ATOM_FILE_CREATION_TIME;
extern ERL_NIF_TERM ATOM_SLOW_COMPRESSION_ESTIMATED_DATA_SIZE;
extern ERL_NIF_TERM ATOM_FAST_COMPRESSION_ESTIMATED_DATA_SIZE;
extern ERL_NIF_TERM ATOM_EXTERNAL_SST_FILE_GLOBAL_SEQNO_OFFSET;
// statistics
extern ERL_NIF_TERM ATOM_STATISTICS;
extern ERL_NIF_TERM ATOM_STATS_DISABLE_ALL;
extern ERL_NIF_TERM ATOM_STATS_EXCEPT_TICKERS;
extern ERL_NIF_TERM ATOM_STATS_EXCEPT_HISTOGRAM_OR_TIMERS;
extern ERL_NIF_TERM ATOM_STATS_EXCEPT_TIMERS;
extern ERL_NIF_TERM ATOM_STATS_EXCEPT_DETAILED_TIMERS;
extern ERL_NIF_TERM ATOM_STATS_EXCEPT_TIME_FOR_MUTEX;
extern ERL_NIF_TERM ATOM_STATS_ALL;
extern ERL_NIF_TERM ATOM_STATS_LEVEL;
// BlobDB Statistics Tickers
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_PUT;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_WRITE;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_GET;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_MULTIGET;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_SEEK;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_NEXT;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_PREV;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_KEYS_WRITTEN;
extern ERL_NIF_TERM ATOM_BLOB_DB_NUM_KEYS_READ;
extern ERL_NIF_TERM ATOM_BLOB_DB_BYTES_WRITTEN;
extern ERL_NIF_TERM ATOM_BLOB_DB_BYTES_READ;
extern ERL_NIF_TERM ATOM_BLOB_DB_WRITE_INLINED;
extern ERL_NIF_TERM ATOM_BLOB_DB_WRITE_INLINED_TTL;
extern ERL_NIF_TERM ATOM_BLOB_DB_WRITE_BLOB;
extern ERL_NIF_TERM ATOM_BLOB_DB_WRITE_BLOB_TTL;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_BYTES_WRITTEN;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_BYTES_READ;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_SYNCED;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_INDEX_EXPIRED_COUNT;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_INDEX_EXPIRED_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_INDEX_EVICTED_COUNT;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_INDEX_EVICTED_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_DB_GC_NUM_FILES;
extern ERL_NIF_TERM ATOM_BLOB_DB_GC_NUM_NEW_FILES;
extern ERL_NIF_TERM ATOM_BLOB_DB_GC_FAILURES;
extern ERL_NIF_TERM ATOM_BLOB_DB_GC_NUM_KEYS_RELOCATED;
extern ERL_NIF_TERM ATOM_BLOB_DB_GC_BYTES_RELOCATED;
extern ERL_NIF_TERM ATOM_BLOB_DB_FIFO_NUM_FILES_EVICTED;
extern ERL_NIF_TERM ATOM_BLOB_DB_FIFO_NUM_KEYS_EVICTED;
extern ERL_NIF_TERM ATOM_BLOB_DB_FIFO_BYTES_EVICTED;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_MISS;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_HIT;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_ADD;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_ADD_FAILURES;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_BYTES_READ;
extern ERL_NIF_TERM ATOM_BLOB_DB_CACHE_BYTES_WRITE;
// BlobDB Statistics Histograms
extern ERL_NIF_TERM ATOM_BLOB_DB_KEY_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_DB_VALUE_SIZE;
extern ERL_NIF_TERM ATOM_BLOB_DB_WRITE_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_GET_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_MULTIGET_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_SEEK_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_NEXT_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_PREV_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_WRITE_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_READ_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_BLOB_FILE_SYNC_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_COMPRESSION_MICROS;
extern ERL_NIF_TERM ATOM_BLOB_DB_DECOMPRESSION_MICROS;
// Core Operation Histograms
extern ERL_NIF_TERM ATOM_DB_GET;
extern ERL_NIF_TERM ATOM_DB_WRITE;
extern ERL_NIF_TERM ATOM_DB_MULTIGET;
extern ERL_NIF_TERM ATOM_DB_SEEK;
extern ERL_NIF_TERM ATOM_COMPACTION_TIME;
extern ERL_NIF_TERM ATOM_FLUSH_TIME;
// I/O and Sync Histograms
extern ERL_NIF_TERM ATOM_SST_READ_MICROS;
extern ERL_NIF_TERM ATOM_SST_WRITE_MICROS;
extern ERL_NIF_TERM ATOM_TABLE_SYNC_MICROS;
extern ERL_NIF_TERM ATOM_WAL_FILE_SYNC_MICROS;
extern ERL_NIF_TERM ATOM_BYTES_PER_READ;
extern ERL_NIF_TERM ATOM_BYTES_PER_WRITE;
// Transaction Histogram
extern ERL_NIF_TERM ATOM_NUM_OP_PER_TRANSACTION;
// Compaction Statistics Tickers
extern ERL_NIF_TERM ATOM_COMPACT_READ_BYTES;
extern ERL_NIF_TERM ATOM_COMPACT_WRITE_BYTES;
extern ERL_NIF_TERM ATOM_FLUSH_WRITE_BYTES;
extern ERL_NIF_TERM ATOM_COMPACTION_KEY_DROP_NEWER_ENTRY;
extern ERL_NIF_TERM ATOM_COMPACTION_KEY_DROP_OBSOLETE;
extern ERL_NIF_TERM ATOM_COMPACTION_KEY_DROP_RANGE_DEL;
extern ERL_NIF_TERM ATOM_COMPACTION_KEY_DROP_USER;
extern ERL_NIF_TERM ATOM_COMPACTION_CANCELLED;
extern ERL_NIF_TERM ATOM_NUMBER_SUPERVERSION_ACQUIRES;
extern ERL_NIF_TERM ATOM_NUMBER_SUPERVERSION_RELEASES;
// Read/Write Operation Tickers
extern ERL_NIF_TERM ATOM_NUMBER_KEYS_WRITTEN;
extern ERL_NIF_TERM ATOM_NUMBER_KEYS_READ;
extern ERL_NIF_TERM ATOM_NUMBER_KEYS_UPDATED;
extern ERL_NIF_TERM ATOM_BYTES_WRITTEN;
extern ERL_NIF_TERM ATOM_BYTES_READ;
extern ERL_NIF_TERM ATOM_ITER_BYTES_READ;
extern ERL_NIF_TERM ATOM_NUMBER_DB_SEEK;
extern ERL_NIF_TERM ATOM_NUMBER_DB_NEXT;
extern ERL_NIF_TERM ATOM_NUMBER_DB_PREV;
extern ERL_NIF_TERM ATOM_NUMBER_DB_SEEK_FOUND;
extern ERL_NIF_TERM ATOM_NUMBER_DB_NEXT_FOUND;
extern ERL_NIF_TERM ATOM_NUMBER_DB_PREV_FOUND;
// Block Cache Statistics Tickers
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_MISS;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_HIT;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_ADD;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_ADD_FAILURES;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_INDEX_MISS;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_INDEX_HIT;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_FILTER_MISS;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_FILTER_HIT;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_DATA_MISS;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_DATA_HIT;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_BYTES_READ;
extern ERL_NIF_TERM ATOM_BLOCK_CACHE_BYTES_WRITE;
// Memtable and Stall Statistics Tickers
extern ERL_NIF_TERM ATOM_MEMTABLE_HIT;
extern ERL_NIF_TERM ATOM_MEMTABLE_MISS;
extern ERL_NIF_TERM ATOM_STALL_MICROS;
extern ERL_NIF_TERM ATOM_WRITE_DONE_BY_SELF;
extern ERL_NIF_TERM ATOM_WRITE_DONE_BY_OTHER;
extern ERL_NIF_TERM ATOM_WAL_FILE_SYNCED;
// Transaction Statistics Tickers
extern ERL_NIF_TERM ATOM_TXN_PREPARE_MUTEX_OVERHEAD;
extern ERL_NIF_TERM ATOM_TXN_OLD_COMMIT_MAP_MUTEX_OVERHEAD;
extern ERL_NIF_TERM ATOM_TXN_DUPLICATE_KEY_OVERHEAD;
extern ERL_NIF_TERM ATOM_TXN_SNAPSHOT_MUTEX_OVERHEAD;
extern ERL_NIF_TERM ATOM_TXN_GET_TRY_AGAIN;
// Histogram result keys
extern ERL_NIF_TERM ATOM_MEDIAN;
extern ERL_NIF_TERM ATOM_PERCENTILE95;
extern ERL_NIF_TERM ATOM_PERCENTILE99;
extern ERL_NIF_TERM ATOM_AVERAGE;
extern ERL_NIF_TERM ATOM_STANDARD_DEVIATION;
extern ERL_NIF_TERM ATOM_MAX;
extern ERL_NIF_TERM ATOM_COUNT;
extern ERL_NIF_TERM ATOM_SUM;
// Pessimistic Transaction DB Options
extern ERL_NIF_TERM ATOM_MAX_NUM_LOCKS;
extern ERL_NIF_TERM ATOM_NUM_STRIPES;
extern ERL_NIF_TERM ATOM_TRANSACTION_LOCK_TIMEOUT;
extern ERL_NIF_TERM ATOM_DEFAULT_LOCK_TIMEOUT;
// Pessimistic Transaction Options
extern ERL_NIF_TERM ATOM_SET_SNAPSHOT;
extern ERL_NIF_TERM ATOM_DEADLOCK_DETECT;
extern ERL_NIF_TERM ATOM_LOCK_TIMEOUT;
// Pessimistic Transaction Error Codes
extern ERL_NIF_TERM ATOM_BUSY;
extern ERL_NIF_TERM ATOM_TIMED_OUT;
extern ERL_NIF_TERM ATOM_EXPIRED;
extern ERL_NIF_TERM ATOM_TRY_AGAIN;
// Column Family/Blob Metadata
extern ERL_NIF_TERM ATOM_SIZE;
extern ERL_NIF_TERM ATOM_FILE_COUNT;
extern ERL_NIF_TERM ATOM_NAME;
// ATOM_BLOB_FILE_SIZE already declared in CFOptions blob section
extern ERL_NIF_TERM ATOM_BLOB_FILES;
extern ERL_NIF_TERM ATOM_BLOB_FILE_NUMBER;
extern ERL_NIF_TERM ATOM_BLOB_FILE_NAME;
extern ERL_NIF_TERM ATOM_BLOB_FILE_PATH;
extern ERL_NIF_TERM ATOM_TOTAL_BLOB_COUNT;
extern ERL_NIF_TERM ATOM_TOTAL_BLOB_BYTES;
extern ERL_NIF_TERM ATOM_GARBAGE_BLOB_COUNT;
extern ERL_NIF_TERM ATOM_GARBAGE_BLOB_BYTES;
// Background Work Control (RocksDB 10.8+)
// No new atoms needed - these functions don't take options
// FlushWAL options (RocksDB 10.8+)
extern ERL_NIF_TERM ATOM_RATE_LIMITER_PRIORITY;
extern ERL_NIF_TERM ATOM_IO_LOW;
extern ERL_NIF_TERM ATOM_IO_MID;
extern ERL_NIF_TERM ATOM_IO_HIGH;
extern ERL_NIF_TERM ATOM_IO_USER;
extern ERL_NIF_TERM ATOM_IO_TOTAL;
// Manifest auto-tuning (RocksDB 10.9+)
extern ERL_NIF_TERM ATOM_MAX_MANIFEST_SPACE_AMP_PCT;
// CF option for compaction file size control (RocksDB 10.10+)
extern ERL_NIF_TERM ATOM_TARGET_FILE_SIZE_IS_UPPER_BOUND;
} // namespace erocksdb
// Erlang helpers:
ERL_NIF_TERM error_einval(ErlNifEnv* env);
template <typename Acc> ERL_NIF_TERM fold(ErlNifEnv* env, ERL_NIF_TERM list,
ERL_NIF_TERM(*fun)(ErlNifEnv*, ERL_NIF_TERM, Acc&),
Acc& acc)
{
ERL_NIF_TERM head, tail = list;
while (enif_get_list_cell(env, tail, &head, &tail))
{
ERL_NIF_TERM result = fun(env, head, acc);
if (result != erocksdb::ATOM_OK)
{
return result;
}
}
return erocksdb::ATOM_OK;
}
#endif // ATOMS_H