Current section

Files

Jump to
rocksdb c_src atoms.h
Raw

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;
extern ERL_NIF_TERM ATOM_ENCRYPTED;
// 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;
// Options added in RocksDB 11.0/11.1
extern ERL_NIF_TERM ATOM_OPEN_FILES_ASYNC;
extern ERL_NIF_TERM ATOM_ENFORCE_WRITE_BUFFER_MANAGER_DURING_RECOVERY;
extern ERL_NIF_TERM ATOM_VERIFY_MANIFEST_CONTENT_ON_CLOSE;
extern ERL_NIF_TERM ATOM_MEMTABLE_BATCH_LOOKUP_OPTIMIZATION;
extern ERL_NIF_TERM ATOM_MAX_DATA_FILES_SIZE;
extern ERL_NIF_TERM ATOM_USE_KV_RATIO_COMPACTION;
extern ERL_NIF_TERM ATOM_INDEX_BLOCK_SEARCH_TYPE;
extern ERL_NIF_TERM ATOM_UNIFORM_CV_THRESHOLD;
extern ERL_NIF_TERM ATOM_PREPOPULATE_BLOCK_CACHE;
extern ERL_NIF_TERM ATOM_FLUSH_AND_COMPACTION;
extern ERL_NIF_TERM ATOM_BINARY_SEARCH;
extern ERL_NIF_TERM ATOM_INTERPOLATION;
extern ERL_NIF_TERM ATOM_AUTO;
} // 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