Kuzu C++ API
Loading...
Searching...
No Matches
constants.h
Go to the documentation of this file.
1#pragma once
2
3#include <array>
4#include <cstdint>
5#include <string_view>
6
7#include "array_utils.h"
8#include "types.h"
9
10namespace kuzu {
11namespace common {
12
13extern const char* KUZU_VERSION;
14
15constexpr double DEFAULT_HT_LOAD_FACTOR = 1.5;
16
17// This is the default thread sleep time we use when a thread,
18// e.g., a worker thread is in TaskScheduler, needs to block.
20
21constexpr uint64_t DEFAULT_CHECKPOINT_WAIT_TIMEOUT_IN_MICROS = 5000000;
22
23// Note that some places use std::bit_ceil to calculate resizes,
24// which won't work for values other than 2. If this is changed, those will need to be updated
25constexpr uint64_t CHUNK_RESIZE_RATIO = 2;
26
28 static constexpr char ANONYMOUS[] = "";
29 static constexpr char ID[] = "_ID";
30 static constexpr char LABEL[] = "_LABEL";
31 static constexpr char SRC[] = "_SRC";
32 static constexpr char DST[] = "_DST";
33 static constexpr char DIRECTION[] = "_DIRECTION";
34 static constexpr char LENGTH[] = "_LENGTH";
35 static constexpr char NODES[] = "_NODES";
36 static constexpr char RELS[] = "_RELS";
37 static constexpr char STAR[] = "*";
38 static constexpr char PLACE_HOLDER[] = "_PLACE_HOLDER";
39 static constexpr char MAP_KEY[] = "KEY";
40 static constexpr char MAP_VALUE[] = "VALUE";
41
42 static constexpr std::string_view ROW_OFFSET = "_row_offset";
43 static constexpr std::string_view SRC_OFFSET = "_src_offset";
44 static constexpr std::string_view DST_OFFSET = "_dst_offset";
45};
46
47enum PageSizeClass : uint8_t {
50};
51
53 // If a user does not specify a max size for BM, we by default set the max size of BM to
54 // maxPhyMemSize * DEFAULT_PHY_MEM_SIZE_RATIO_FOR_BM.
55 static constexpr double DEFAULT_PHY_MEM_SIZE_RATIO_FOR_BM = 0.8;
56// The default max size for a VMRegion.
57#ifdef __32BIT__
58 static constexpr uint64_t DEFAULT_VM_REGION_MAX_SIZE = (uint64_t)1 << 30; // (1GB)
59#elif defined(__ANDROID__)
60 static constexpr uint64_t DEFAULT_VM_REGION_MAX_SIZE = (uint64_t)1 << 38; // (256GB)
61#else
62 static constexpr uint64_t DEFAULT_VM_REGION_MAX_SIZE = static_cast<uint64_t>(1) << 43; // (8TB)
63#endif
64};
65
67 static constexpr char OVERFLOW_FILE_SUFFIX[] = ".ovf";
68 static constexpr char WAL_FILE_SUFFIX[] = ".wal";
69 static constexpr char SHADOWING_SUFFIX[] = ".shadow";
70 static constexpr char INDEX_FILE_SUFFIX[] = ".hindex";
71 static constexpr char CATALOG_FILE_NAME[] = "catalog.kz";
72 static constexpr char CATALOG_FILE_NAME_FOR_WAL[] = "catalog.shadow";
73 static constexpr char DATA_FILE_NAME[] = "data.kz";
74 static constexpr char METADATA_FILE_NAME[] = "metadata.kz";
75 static constexpr char METADATA_FILE_NAME_FOR_WAL[] = "metadata.shadow";
76 static constexpr char LOCK_FILE_NAME[] = ".lock";
77
78 // The number of pages that we add at one time when we need to grow a file.
79 static constexpr uint64_t PAGE_GROUP_SIZE_LOG2 = 10;
80 static constexpr uint64_t PAGE_GROUP_SIZE = static_cast<uint64_t>(1) << PAGE_GROUP_SIZE_LOG2;
81 static constexpr uint64_t PAGE_IDX_IN_GROUP_MASK =
82 (static_cast<uint64_t>(1) << PAGE_GROUP_SIZE_LOG2) - 1;
83
84 static constexpr double PACKED_CSR_DENSITY = 0.8;
85 static constexpr double LEAF_HIGH_CSR_DENSITY = 1.0;
86
87 static constexpr uint64_t MAX_NUM_ROWS_IN_TABLE = static_cast<uint64_t>(1) << 62;
88
89 static constexpr char TEMP_SPILLING_FILE_NAME[] = ".tmp";
90};
91
93 static constexpr char REL_STORAGE_DIRECTION_OPTION[] = "STORAGE_DIRECTION";
94};
95
96// Hash Index Configurations
98 static constexpr uint16_t SLOT_CAPACITY_BYTES = 256;
99 static constexpr uint64_t NUM_HASH_INDEXES_LOG2 = 8;
100 static constexpr uint64_t NUM_HASH_INDEXES = 1 << NUM_HASH_INDEXES_LOG2;
101};
102
104 // Initial size of buffer for CSV Reader.
105 static constexpr uint64_t INITIAL_BUFFER_SIZE = 16384;
106 // This means that we will usually read the entirety of the contents of the file we need for a
107 // block in one read request. It is also very small, which means we can parallelize small files
108 // efficiently.
109 static constexpr uint64_t PARALLEL_BLOCK_SIZE = INITIAL_BUFFER_SIZE / 2;
110
111 static constexpr const char* IGNORE_ERRORS_OPTION_NAME = "IGNORE_ERRORS";
112
113 static constexpr const char* FROM_OPTION_NAME = "FROM";
114 static constexpr const char* TO_OPTION_NAME = "TO";
115
116 static constexpr const char* BOOL_CSV_PARSING_OPTIONS[] = {"HEADER", "PARALLEL",
117 "LIST_UNBRACED", "AUTODETECT", "AUTO_DETECT", CopyConstants::IGNORE_ERRORS_OPTION_NAME};
118 static constexpr bool DEFAULT_CSV_HAS_HEADER = false;
119 static constexpr bool DEFAULT_CSV_PARALLEL = true;
120
121 // Default configuration for csv file parsing
122 static constexpr const char* STRING_CSV_PARSING_OPTIONS[] = {"ESCAPE", "DELIM", "DELIMITER",
123 "QUOTE"};
124 static constexpr char DEFAULT_CSV_ESCAPE_CHAR = '"';
125 static constexpr char DEFAULT_CSV_DELIMITER = ',';
126 static constexpr bool DEFAULT_CSV_ALLOW_UNBRACED_LIST = false;
127 static constexpr char DEFAULT_CSV_QUOTE_CHAR = '"';
128 static constexpr char DEFAULT_CSV_LIST_BEGIN_CHAR = '[';
129 static constexpr char DEFAULT_CSV_LIST_END_CHAR = ']';
130 static constexpr bool DEFAULT_IGNORE_ERRORS = false;
131 static constexpr bool DEFAULT_CSV_AUTO_DETECT = true;
132 static constexpr bool DEFAULT_CSV_SET_DIALECT = false;
133 static constexpr std::array DEFAULT_CSV_DELIMITER_SEARCH_SPACE = {',', ';', '\t', '|'};
134 static constexpr std::array DEFAULT_CSV_QUOTE_SEARCH_SPACE = {'"', '\''};
135 static constexpr std::array DEFAULT_CSV_ESCAPE_SEARCH_SPACE = {'"', '\\', '\''};
136
137 static constexpr const char* INT_CSV_PARSING_OPTIONS[] = {"SKIP", "SAMPLE_SIZE"};
138 static constexpr uint64_t DEFAULT_CSV_SKIP_NUM = 0;
139 static constexpr uint64_t DEFAULT_CSV_TYPE_DEDUCTION_SAMPLE_SIZE = 256;
140
141 // metadata columns used to populate CSV warnings
142 static constexpr std::array SHARED_WARNING_DATA_COLUMN_NAMES = {"blockIdx", "offsetInBlock",
143 "startByteOffset", "endByteOffset"};
148
149 static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_NAMES = {"fileIdx"};
151
152 static constexpr std::array CSV_WARNING_DATA_COLUMN_NAMES =
154 static constexpr std::array CSV_WARNING_DATA_COLUMN_TYPES =
159
161};
162
164 static constexpr double NON_EQUALITY_PREDICATE_SELECTIVITY = 0.1;
165 static constexpr double EQUALITY_PREDICATE_SELECTIVITY = 0.01;
166 static constexpr uint64_t BUILD_PENALTY = 2;
167 // Avoid doing probe to build SIP if we have to accumulate a probe side that is much bigger than
168 // build side. Also avoid doing build to probe SIP if probe side is not much bigger than build.
169 static constexpr uint64_t SIP_RATIO = 5;
170};
171
173 static constexpr uint64_t NUM_BYTES_FOR_PAYLOAD_IDX = 8;
174 static constexpr uint64_t MIN_LIMIT_RATIO_TO_REDUCE = 2;
175};
176
178 static constexpr uint64_t PARQUET_DEFINE_VALID = 65535;
179 static constexpr const char* PARQUET_MAGIC_WORDS = "PAR1";
180 // We limit the uncompressed page size to 100MB.
181 // The max size in Parquet is 2GB, but we choose a more conservative limit.
182 static constexpr uint64_t MAX_UNCOMPRESSED_PAGE_SIZE = 100000000;
183 // Dictionary pages must be below 2GB. Unlike data pages, there's only one dictionary page.
184 // For this reason we go with a much higher, but still a conservative upper bound of 1GB.
185 static constexpr uint64_t MAX_UNCOMPRESSED_DICT_PAGE_SIZE = 1e9;
186 // The maximum size a key entry in an RLE page takes.
187 static constexpr uint64_t MAX_DICTIONARY_KEY_SIZE = sizeof(uint32_t);
188 // The size of encoding the string length.
189 static constexpr uint64_t STRING_LENGTH_SIZE = sizeof(uint32_t);
190 static constexpr uint64_t MAX_STRING_STATISTICS_SIZE = 10000;
191 static constexpr uint64_t PARQUET_INTERVAL_SIZE = 12;
192 static constexpr uint64_t PARQUET_UUID_SIZE = 16;
193};
194
196 static constexpr const char* DEFAULT_CSV_NEWLINE = "\n";
197 static constexpr const char* DEFAULT_NULL_STR = "";
198 static constexpr bool DEFAULT_FORCE_QUOTE = false;
199 static constexpr uint64_t DEFAULT_CSV_FLUSH_SIZE = 4096 * 8;
200};
201
203 static constexpr char INDEX_FILE_NAME[] = "index.cypher";
204 static constexpr char SCHEMA_FILE_NAME[] = "schema.cypher";
205 static constexpr char COPY_FILE_NAME[] = "copy.cypher";
206};
207
209 static constexpr std::array WARNING_TABLE_COLUMN_NAMES{"query_id", "message", "file_path",
210 "line_number", "skipped_line_or_record"};
213 static constexpr uint64_t WARNING_TABLE_NUM_COLUMNS = WARNING_TABLE_COLUMN_NAMES.size();
214
216};
217
218static constexpr char ATTACHED_KUZU_DB_TYPE[] = "KUZU";
219
220static constexpr char LOCAL_DB_NAME[] = "local(kuzu)";
221
222constexpr auto DECIMAL_PRECISION_LIMIT = 38;
223
224} // namespace common
225} // namespace kuzu
Definition array_utils.h:7
constexpr auto DECIMAL_PRECISION_LIMIT
Definition constants.h:222
constexpr std::array< T, N1+N2 > arrayConcat(const std::array< T, N1 > &arr1, const std::array< T, N2 > &arr2)
Definition array_utils.h:9
constexpr uint64_t CHUNK_RESIZE_RATIO
Definition constants.h:25
constexpr double DEFAULT_HT_LOAD_FACTOR
Definition constants.h:15
uint32_t column_id_t
Definition types.h:41
constexpr uint64_t THREAD_SLEEP_TIME_WHEN_WAITING_IN_MICROS
Definition constants.h:19
const char * KUZU_VERSION
PageSizeClass
Definition constants.h:47
@ TEMP_PAGE
Definition constants.h:49
@ REGULAR_PAGE
Definition constants.h:48
constexpr uint64_t DEFAULT_CHECKPOINT_WAIT_TIMEOUT_IN_MICROS
Definition constants.h:21
@ UINT32
Definition types.h:192
@ STRING
Definition types.h:208
@ UINT64
Definition types.h:191
Definition array_utils.h:7
Definition constants.h:52
static constexpr uint64_t DEFAULT_VM_REGION_MAX_SIZE
Definition constants.h:62
static constexpr double DEFAULT_PHY_MEM_SIZE_RATIO_FOR_BM
Definition constants.h:55
Definition constants.h:103
static constexpr const char * STRING_CSV_PARSING_OPTIONS[]
Definition constants.h:122
static constexpr char DEFAULT_CSV_DELIMITER
Definition constants.h:125
static constexpr uint64_t DEFAULT_CSV_SKIP_NUM
Definition constants.h:138
static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_NAMES
Definition constants.h:149
static constexpr bool DEFAULT_CSV_AUTO_DETECT
Definition constants.h:131
static constexpr std::array SHARED_WARNING_DATA_COLUMN_NAMES
Definition constants.h:142
static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_TYPES
Definition constants.h:150
static constexpr uint64_t DEFAULT_CSV_TYPE_DEDUCTION_SAMPLE_SIZE
Definition constants.h:139
static constexpr const char * INT_CSV_PARSING_OPTIONS[]
Definition constants.h:137
static constexpr std::array DEFAULT_CSV_QUOTE_SEARCH_SPACE
Definition constants.h:134
static constexpr char DEFAULT_CSV_QUOTE_CHAR
Definition constants.h:127
static constexpr char DEFAULT_CSV_LIST_BEGIN_CHAR
Definition constants.h:128
static constexpr const char * TO_OPTION_NAME
Definition constants.h:114
static constexpr bool DEFAULT_CSV_ALLOW_UNBRACED_LIST
Definition constants.h:126
static constexpr const char * BOOL_CSV_PARSING_OPTIONS[]
Definition constants.h:116
static constexpr bool DEFAULT_CSV_SET_DIALECT
Definition constants.h:132
static constexpr column_id_t CSV_WARNING_DATA_NUM_COLUMNS
Definition constants.h:156
static constexpr std::array CSV_WARNING_DATA_COLUMN_TYPES
Definition constants.h:154
static constexpr bool DEFAULT_IGNORE_ERRORS
Definition constants.h:130
static constexpr column_id_t MAX_NUM_WARNING_DATA_COLUMNS
Definition constants.h:160
static constexpr std::array DEFAULT_CSV_DELIMITER_SEARCH_SPACE
Definition constants.h:133
static constexpr const char * IGNORE_ERRORS_OPTION_NAME
Definition constants.h:111
static constexpr uint64_t PARALLEL_BLOCK_SIZE
Definition constants.h:109
static constexpr std::array SHARED_WARNING_DATA_COLUMN_TYPES
Definition constants.h:144
static constexpr column_id_t SHARED_WARNING_DATA_NUM_COLUMNS
Definition constants.h:146
static constexpr const char * FROM_OPTION_NAME
Definition constants.h:113
static constexpr bool DEFAULT_CSV_HAS_HEADER
Definition constants.h:118
static constexpr bool DEFAULT_CSV_PARALLEL
Definition constants.h:119
static constexpr char DEFAULT_CSV_LIST_END_CHAR
Definition constants.h:129
static constexpr uint64_t INITIAL_BUFFER_SIZE
Definition constants.h:105
static constexpr char DEFAULT_CSV_ESCAPE_CHAR
Definition constants.h:124
static constexpr std::array CSV_WARNING_DATA_COLUMN_NAMES
Definition constants.h:152
static constexpr std::array DEFAULT_CSV_ESCAPE_SEARCH_SPACE
Definition constants.h:135
Definition constants.h:195
static constexpr const char * DEFAULT_CSV_NEWLINE
Definition constants.h:196
static constexpr uint64_t DEFAULT_CSV_FLUSH_SIZE
Definition constants.h:199
static constexpr const char * DEFAULT_NULL_STR
Definition constants.h:197
static constexpr bool DEFAULT_FORCE_QUOTE
Definition constants.h:198
Definition constants.h:97
static constexpr uint64_t NUM_HASH_INDEXES
Definition constants.h:100
static constexpr uint64_t NUM_HASH_INDEXES_LOG2
Definition constants.h:99
static constexpr uint16_t SLOT_CAPACITY_BYTES
Definition constants.h:98
Definition constants.h:27
static constexpr char STAR[]
Definition constants.h:37
static constexpr char LENGTH[]
Definition constants.h:34
static constexpr char PLACE_HOLDER[]
Definition constants.h:38
static constexpr std::string_view DST_OFFSET
Definition constants.h:44
static constexpr char RELS[]
Definition constants.h:36
static constexpr char DIRECTION[]
Definition constants.h:33
static constexpr char ID[]
Definition constants.h:29
static constexpr std::string_view SRC_OFFSET
Definition constants.h:43
static constexpr char DST[]
Definition constants.h:32
static constexpr std::string_view ROW_OFFSET
Definition constants.h:42
static constexpr char MAP_KEY[]
Definition constants.h:39
static constexpr char MAP_VALUE[]
Definition constants.h:40
static constexpr char SRC[]
Definition constants.h:31
static constexpr char LABEL[]
Definition constants.h:30
static constexpr char NODES[]
Definition constants.h:35
static constexpr char ANONYMOUS[]
Definition constants.h:28
Definition constants.h:172
static constexpr uint64_t MIN_LIMIT_RATIO_TO_REDUCE
Definition constants.h:174
static constexpr uint64_t NUM_BYTES_FOR_PAYLOAD_IDX
Definition constants.h:173
Definition constants.h:177
static constexpr uint64_t PARQUET_DEFINE_VALID
Definition constants.h:178
static constexpr uint64_t PARQUET_UUID_SIZE
Definition constants.h:192
static constexpr uint64_t MAX_UNCOMPRESSED_PAGE_SIZE
Definition constants.h:182
static constexpr uint64_t STRING_LENGTH_SIZE
Definition constants.h:189
static constexpr uint64_t MAX_STRING_STATISTICS_SIZE
Definition constants.h:190
static constexpr uint64_t MAX_DICTIONARY_KEY_SIZE
Definition constants.h:187
static constexpr const char * PARQUET_MAGIC_WORDS
Definition constants.h:179
static constexpr uint64_t MAX_UNCOMPRESSED_DICT_PAGE_SIZE
Definition constants.h:185
static constexpr uint64_t PARQUET_INTERVAL_SIZE
Definition constants.h:191
Definition constants.h:163
static constexpr double NON_EQUALITY_PREDICATE_SELECTIVITY
Definition constants.h:164
static constexpr double EQUALITY_PREDICATE_SELECTIVITY
Definition constants.h:165
static constexpr uint64_t BUILD_PENALTY
Definition constants.h:166
static constexpr uint64_t SIP_RATIO
Definition constants.h:169
Definition constants.h:202
static constexpr char SCHEMA_FILE_NAME[]
Definition constants.h:204
static constexpr char INDEX_FILE_NAME[]
Definition constants.h:203
static constexpr char COPY_FILE_NAME[]
Definition constants.h:205
Definition constants.h:66
static constexpr char CATALOG_FILE_NAME_FOR_WAL[]
Definition constants.h:72
static constexpr char CATALOG_FILE_NAME[]
Definition constants.h:71
static constexpr char METADATA_FILE_NAME_FOR_WAL[]
Definition constants.h:75
static constexpr char TEMP_SPILLING_FILE_NAME[]
Definition constants.h:89
static constexpr char WAL_FILE_SUFFIX[]
Definition constants.h:68
static constexpr char LOCK_FILE_NAME[]
Definition constants.h:76
static constexpr uint64_t MAX_NUM_ROWS_IN_TABLE
Definition constants.h:87
static constexpr char METADATA_FILE_NAME[]
Definition constants.h:74
static constexpr uint64_t PAGE_IDX_IN_GROUP_MASK
Definition constants.h:81
static constexpr char OVERFLOW_FILE_SUFFIX[]
Definition constants.h:67
static constexpr char SHADOWING_SUFFIX[]
Definition constants.h:69
static constexpr uint64_t PAGE_GROUP_SIZE
Definition constants.h:80
static constexpr char DATA_FILE_NAME[]
Definition constants.h:73
static constexpr char INDEX_FILE_SUFFIX[]
Definition constants.h:70
static constexpr double PACKED_CSR_DENSITY
Definition constants.h:84
static constexpr uint64_t PAGE_GROUP_SIZE_LOG2
Definition constants.h:79
static constexpr double LEAF_HIGH_CSR_DENSITY
Definition constants.h:85
Definition constants.h:92
static constexpr char REL_STORAGE_DIRECTION_OPTION[]
Definition constants.h:93
Definition constants.h:208
static constexpr std::array WARNING_TABLE_COLUMN_DATA_TYPES
Definition constants.h:211
static constexpr std::array WARNING_TABLE_COLUMN_NAMES
Definition constants.h:209
static constexpr uint64_t WARNING_TABLE_NUM_COLUMNS
Definition constants.h:213