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 page_idx_t DB_HEADER_PAGE_IDX = 0;
68 static constexpr char WAL_FILE_SUFFIX[] = "wal";
69 static constexpr char SHADOWING_SUFFIX[] = "shadow";
70 static constexpr char TEMP_FILE_SUFFIX[] = "tmp";
71
72 // The number of pages that we add at one time when we need to grow a file.
73 static constexpr uint64_t PAGE_GROUP_SIZE_LOG2 = 10;
74 static constexpr uint64_t PAGE_GROUP_SIZE = static_cast<uint64_t>(1) << PAGE_GROUP_SIZE_LOG2;
75 static constexpr uint64_t PAGE_IDX_IN_GROUP_MASK =
76 (static_cast<uint64_t>(1) << PAGE_GROUP_SIZE_LOG2) - 1;
77
78 static constexpr double PACKED_CSR_DENSITY = 0.8;
79 static constexpr double LEAF_HIGH_CSR_DENSITY = 1.0;
80
81 static constexpr uint64_t MAX_NUM_ROWS_IN_TABLE = static_cast<uint64_t>(1) << 62;
82};
83
85 static constexpr char REL_STORAGE_DIRECTION_OPTION[] = "STORAGE_DIRECTION";
86};
87
88// Hash Index Configurations
90 static constexpr uint16_t SLOT_CAPACITY_BYTES = 256;
91 static constexpr uint64_t NUM_HASH_INDEXES_LOG2 = 8;
92 static constexpr uint64_t NUM_HASH_INDEXES = 1 << NUM_HASH_INDEXES_LOG2;
93};
94
96 // Initial size of buffer for CSV Reader.
97 static constexpr uint64_t INITIAL_BUFFER_SIZE = 16384;
98 // This means that we will usually read the entirety of the contents of the file we need for a
99 // block in one read request. It is also very small, which means we can parallelize small files
100 // efficiently.
101 static constexpr uint64_t PARALLEL_BLOCK_SIZE = INITIAL_BUFFER_SIZE / 2;
102
103 static constexpr const char* IGNORE_ERRORS_OPTION_NAME = "IGNORE_ERRORS";
104
105 static constexpr const char* FROM_OPTION_NAME = "FROM";
106 static constexpr const char* TO_OPTION_NAME = "TO";
107
108 static constexpr const char* BOOL_CSV_PARSING_OPTIONS[] = {"HEADER", "PARALLEL",
109 "LIST_UNBRACED", "AUTODETECT", "AUTO_DETECT", CopyConstants::IGNORE_ERRORS_OPTION_NAME};
110 static constexpr bool DEFAULT_CSV_HAS_HEADER = false;
111 static constexpr bool DEFAULT_CSV_PARALLEL = true;
112
113 // Default configuration for csv file parsing
114 static constexpr const char* STRING_CSV_PARSING_OPTIONS[] = {"ESCAPE", "DELIM", "DELIMITER",
115 "QUOTE"};
116 static constexpr char DEFAULT_CSV_ESCAPE_CHAR = '"';
117 static constexpr char DEFAULT_CSV_DELIMITER = ',';
118 static constexpr bool DEFAULT_CSV_ALLOW_UNBRACED_LIST = false;
119 static constexpr char DEFAULT_CSV_QUOTE_CHAR = '"';
120 static constexpr char DEFAULT_CSV_LIST_BEGIN_CHAR = '[';
121 static constexpr char DEFAULT_CSV_LIST_END_CHAR = ']';
122 static constexpr bool DEFAULT_IGNORE_ERRORS = false;
123 static constexpr bool DEFAULT_CSV_AUTO_DETECT = true;
124 static constexpr bool DEFAULT_CSV_SET_DIALECT = false;
125 static constexpr std::array DEFAULT_CSV_DELIMITER_SEARCH_SPACE = {',', ';', '\t', '|'};
126 static constexpr std::array DEFAULT_CSV_QUOTE_SEARCH_SPACE = {'"', '\''};
127 static constexpr std::array DEFAULT_CSV_ESCAPE_SEARCH_SPACE = {'"', '\\', '\''};
128 static constexpr std::array DEFAULT_CSV_NULL_STRINGS = {""};
129
130 static constexpr const char* INT_CSV_PARSING_OPTIONS[] = {"SKIP", "SAMPLE_SIZE"};
131 static constexpr uint64_t DEFAULT_CSV_SKIP_NUM = 0;
132 static constexpr uint64_t DEFAULT_CSV_TYPE_DEDUCTION_SAMPLE_SIZE = 256;
133
134 static constexpr const char* LIST_CSV_PARSING_OPTIONS[] = {"NULL_STRINGS"};
135
136 // metadata columns used to populate CSV warnings
137 static constexpr std::array SHARED_WARNING_DATA_COLUMN_NAMES = {"blockIdx", "offsetInBlock",
138 "startByteOffset", "endByteOffset"};
143
144 static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_NAMES = {"fileIdx"};
146
147 static constexpr std::array CSV_WARNING_DATA_COLUMN_NAMES =
149 static constexpr std::array CSV_WARNING_DATA_COLUMN_TYPES =
154
156};
157
159 static constexpr double NON_EQUALITY_PREDICATE_SELECTIVITY = 0.1;
160 static constexpr double EQUALITY_PREDICATE_SELECTIVITY = 0.01;
161 static constexpr uint64_t BUILD_PENALTY = 2;
162 // Avoid doing probe to build SIP if we have to accumulate a probe side that is much bigger than
163 // build side. Also avoid doing build to probe SIP if probe side is not much bigger than build.
164 static constexpr uint64_t SIP_RATIO = 5;
165};
166
168 static constexpr uint64_t NUM_BYTES_FOR_PAYLOAD_IDX = 8;
169 static constexpr uint64_t MIN_LIMIT_RATIO_TO_REDUCE = 2;
170};
171
173 static constexpr uint64_t PARQUET_DEFINE_VALID = 65535;
174 static constexpr const char* PARQUET_MAGIC_WORDS = "PAR1";
175 // We limit the uncompressed page size to 100MB.
176 // The max size in Parquet is 2GB, but we choose a more conservative limit.
177 static constexpr uint64_t MAX_UNCOMPRESSED_PAGE_SIZE = 100000000;
178 // Dictionary pages must be below 2GB. Unlike data pages, there's only one dictionary page.
179 // For this reason we go with a much higher, but still a conservative upper bound of 1GB.
180 static constexpr uint64_t MAX_UNCOMPRESSED_DICT_PAGE_SIZE = 1e9;
181 // The maximum size a key entry in an RLE page takes.
182 static constexpr uint64_t MAX_DICTIONARY_KEY_SIZE = sizeof(uint32_t);
183 // The size of encoding the string length.
184 static constexpr uint64_t STRING_LENGTH_SIZE = sizeof(uint32_t);
185 static constexpr uint64_t MAX_STRING_STATISTICS_SIZE = 10000;
186 static constexpr uint64_t PARQUET_INTERVAL_SIZE = 12;
187 static constexpr uint64_t PARQUET_UUID_SIZE = 16;
188};
189
191 static constexpr const char* DEFAULT_CSV_NEWLINE = "\n\r";
192 static constexpr const char* DEFAULT_NULL_STR = "";
193 static constexpr bool DEFAULT_FORCE_QUOTE = false;
194 static constexpr uint64_t DEFAULT_CSV_FLUSH_SIZE = 4096 * 8;
195};
196
198 static constexpr char INDEX_FILE_NAME[] = "index.cypher";
199 static constexpr char SCHEMA_FILE_NAME[] = "schema.cypher";
200 static constexpr char COPY_FILE_NAME[] = "copy.cypher";
201 static constexpr const char* SCHEMA_ONLY_OPTION = "SCHEMA_ONLY";
202 static constexpr const char* EXPORT_FORMAT_OPTION = "FORMAT";
203 static constexpr const char* DEFAULT_EXPORT_FORMAT_OPTION = "PARQUET";
204};
205
207 static constexpr std::array WARNING_TABLE_COLUMN_NAMES{"query_id", "message", "file_path",
208 "line_number", "skipped_line_or_record"};
211 static constexpr uint64_t WARNING_TABLE_NUM_COLUMNS = WARNING_TABLE_COLUMN_NAMES.size();
212
214};
215
216static constexpr char ATTACHED_KUZU_DB_TYPE[] = "KUZU";
217
218static constexpr char LOCAL_DB_NAME[] = "local(kuzu)";
219
220constexpr auto DECIMAL_PRECISION_LIMIT = 38;
221
222} // namespace common
223} // namespace kuzu
Definition array_utils.h:7
constexpr auto DECIMAL_PRECISION_LIMIT
Definition constants.h:220
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_t page_idx_t
Definition types.h:33
@ 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:95
static constexpr const char * STRING_CSV_PARSING_OPTIONS[]
Definition constants.h:114
static constexpr char DEFAULT_CSV_DELIMITER
Definition constants.h:117
static constexpr uint64_t DEFAULT_CSV_SKIP_NUM
Definition constants.h:131
static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_NAMES
Definition constants.h:144
static constexpr bool DEFAULT_CSV_AUTO_DETECT
Definition constants.h:123
static constexpr std::array SHARED_WARNING_DATA_COLUMN_NAMES
Definition constants.h:137
static constexpr std::array CSV_SPECIFIC_WARNING_DATA_COLUMN_TYPES
Definition constants.h:145
static constexpr uint64_t DEFAULT_CSV_TYPE_DEDUCTION_SAMPLE_SIZE
Definition constants.h:132
static constexpr const char * INT_CSV_PARSING_OPTIONS[]
Definition constants.h:130
static constexpr std::array DEFAULT_CSV_QUOTE_SEARCH_SPACE
Definition constants.h:126
static constexpr char DEFAULT_CSV_QUOTE_CHAR
Definition constants.h:119
static constexpr char DEFAULT_CSV_LIST_BEGIN_CHAR
Definition constants.h:120
static constexpr const char * TO_OPTION_NAME
Definition constants.h:106
static constexpr bool DEFAULT_CSV_ALLOW_UNBRACED_LIST
Definition constants.h:118
static constexpr std::array DEFAULT_CSV_NULL_STRINGS
Definition constants.h:128
static constexpr const char * BOOL_CSV_PARSING_OPTIONS[]
Definition constants.h:108
static constexpr bool DEFAULT_CSV_SET_DIALECT
Definition constants.h:124
static constexpr column_id_t CSV_WARNING_DATA_NUM_COLUMNS
Definition constants.h:151
static constexpr const char * LIST_CSV_PARSING_OPTIONS[]
Definition constants.h:134
static constexpr std::array CSV_WARNING_DATA_COLUMN_TYPES
Definition constants.h:149
static constexpr bool DEFAULT_IGNORE_ERRORS
Definition constants.h:122
static constexpr column_id_t MAX_NUM_WARNING_DATA_COLUMNS
Definition constants.h:155
static constexpr std::array DEFAULT_CSV_DELIMITER_SEARCH_SPACE
Definition constants.h:125
static constexpr const char * IGNORE_ERRORS_OPTION_NAME
Definition constants.h:103
static constexpr uint64_t PARALLEL_BLOCK_SIZE
Definition constants.h:101
static constexpr std::array SHARED_WARNING_DATA_COLUMN_TYPES
Definition constants.h:139
static constexpr column_id_t SHARED_WARNING_DATA_NUM_COLUMNS
Definition constants.h:141
static constexpr const char * FROM_OPTION_NAME
Definition constants.h:105
static constexpr bool DEFAULT_CSV_HAS_HEADER
Definition constants.h:110
static constexpr bool DEFAULT_CSV_PARALLEL
Definition constants.h:111
static constexpr char DEFAULT_CSV_LIST_END_CHAR
Definition constants.h:121
static constexpr uint64_t INITIAL_BUFFER_SIZE
Definition constants.h:97
static constexpr char DEFAULT_CSV_ESCAPE_CHAR
Definition constants.h:116
static constexpr std::array CSV_WARNING_DATA_COLUMN_NAMES
Definition constants.h:147
static constexpr std::array DEFAULT_CSV_ESCAPE_SEARCH_SPACE
Definition constants.h:127
Definition constants.h:190
static constexpr const char * DEFAULT_CSV_NEWLINE
Definition constants.h:191
static constexpr uint64_t DEFAULT_CSV_FLUSH_SIZE
Definition constants.h:194
static constexpr const char * DEFAULT_NULL_STR
Definition constants.h:192
static constexpr bool DEFAULT_FORCE_QUOTE
Definition constants.h:193
Definition constants.h:89
static constexpr uint64_t NUM_HASH_INDEXES
Definition constants.h:92
static constexpr uint64_t NUM_HASH_INDEXES_LOG2
Definition constants.h:91
static constexpr uint16_t SLOT_CAPACITY_BYTES
Definition constants.h:90
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:167
static constexpr uint64_t MIN_LIMIT_RATIO_TO_REDUCE
Definition constants.h:169
static constexpr uint64_t NUM_BYTES_FOR_PAYLOAD_IDX
Definition constants.h:168
Definition constants.h:172
static constexpr uint64_t PARQUET_DEFINE_VALID
Definition constants.h:173
static constexpr uint64_t PARQUET_UUID_SIZE
Definition constants.h:187
static constexpr uint64_t MAX_UNCOMPRESSED_PAGE_SIZE
Definition constants.h:177
static constexpr uint64_t STRING_LENGTH_SIZE
Definition constants.h:184
static constexpr uint64_t MAX_STRING_STATISTICS_SIZE
Definition constants.h:185
static constexpr uint64_t MAX_DICTIONARY_KEY_SIZE
Definition constants.h:182
static constexpr const char * PARQUET_MAGIC_WORDS
Definition constants.h:174
static constexpr uint64_t MAX_UNCOMPRESSED_DICT_PAGE_SIZE
Definition constants.h:180
static constexpr uint64_t PARQUET_INTERVAL_SIZE
Definition constants.h:186
Definition constants.h:158
static constexpr double NON_EQUALITY_PREDICATE_SELECTIVITY
Definition constants.h:159
static constexpr double EQUALITY_PREDICATE_SELECTIVITY
Definition constants.h:160
static constexpr uint64_t BUILD_PENALTY
Definition constants.h:161
static constexpr uint64_t SIP_RATIO
Definition constants.h:164
Definition constants.h:197
static constexpr const char * SCHEMA_ONLY_OPTION
Definition constants.h:201
static constexpr const char * EXPORT_FORMAT_OPTION
Definition constants.h:202
static constexpr char SCHEMA_FILE_NAME[]
Definition constants.h:199
static constexpr char INDEX_FILE_NAME[]
Definition constants.h:198
static constexpr const char * DEFAULT_EXPORT_FORMAT_OPTION
Definition constants.h:203
static constexpr char COPY_FILE_NAME[]
Definition constants.h:200
Definition constants.h:66
static constexpr page_idx_t DB_HEADER_PAGE_IDX
Definition constants.h:67
static constexpr char WAL_FILE_SUFFIX[]
Definition constants.h:68
static constexpr uint64_t MAX_NUM_ROWS_IN_TABLE
Definition constants.h:81
static constexpr uint64_t PAGE_IDX_IN_GROUP_MASK
Definition constants.h:75
static constexpr char SHADOWING_SUFFIX[]
Definition constants.h:69
static constexpr uint64_t PAGE_GROUP_SIZE
Definition constants.h:74
static constexpr double PACKED_CSR_DENSITY
Definition constants.h:78
static constexpr char TEMP_FILE_SUFFIX[]
Definition constants.h:70
static constexpr uint64_t PAGE_GROUP_SIZE_LOG2
Definition constants.h:73
static constexpr double LEAF_HIGH_CSR_DENSITY
Definition constants.h:79
Definition constants.h:84
static constexpr char REL_STORAGE_DIRECTION_OPTION[]
Definition constants.h:85
Definition constants.h:206
static constexpr std::array WARNING_TABLE_COLUMN_DATA_TYPES
Definition constants.h:209
static constexpr std::array WARNING_TABLE_COLUMN_NAMES
Definition constants.h:207
static constexpr uint64_t WARNING_TABLE_NUM_COLUMNS
Definition constants.h:211