Kùzu C API
Loading...
Searching...
No Matches
kuzu.h
Go to the documentation of this file.
1#pragma once
2#include <stdbool.h>
3#include <stdint.h>
4#include <time.h>
5#ifdef _WIN32
6#include <windows.h>
7#endif
8
9/* Export header from common/api.h */
10// Helpers
11#if defined _WIN32 || defined __CYGWIN__
12#define KUZU_HELPER_DLL_IMPORT __declspec(dllimport)
13#define KUZU_HELPER_DLL_EXPORT __declspec(dllexport)
14#define KUZU_HELPER_DLL_LOCAL
15#define KUZU_HELPER_DEPRECATED __declspec(deprecated)
16#else
17#define KUZU_HELPER_DLL_IMPORT __attribute__((visibility("default")))
18#define KUZU_HELPER_DLL_EXPORT __attribute__((visibility("default")))
19#define KUZU_HELPER_DLL_LOCAL __attribute__((visibility("hidden")))
20#define KUZU_HELPER_DEPRECATED __attribute__((__deprecated__))
21#endif
22
23#ifdef KUZU_STATIC_DEFINE
24#define KUZU_API
25#define KUZU_NO_EXPORT
26#else
27#ifndef KUZU_API
28#ifdef KUZU_EXPORTS
29/* We are building this library */
30#define KUZU_API KUZU_HELPER_DLL_EXPORT
31#else
32/* We are using this library */
33#define KUZU_API KUZU_HELPER_DLL_IMPORT
34#endif
35#endif
36
37#endif
38
39#ifndef KUZU_DEPRECATED
40#define KUZU_DEPRECATED KUZU_HELPER_DEPRECATED
41#endif
42
43#ifndef KUZU_DEPRECATED_EXPORT
44#define KUZU_DEPRECATED_EXPORT KUZU_API KUZU_DEPRECATED
45#endif
46/* end export header */
47
48// The Arrow C data interface.
49// https://arrow.apache.org/docs/format/CDataInterface.html
50
51#include <stdint.h>
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57#ifndef ARROW_C_DATA_INTERFACE
58#define ARROW_C_DATA_INTERFACE
59
60#define ARROW_FLAG_DICTIONARY_ORDERED 1
61#define ARROW_FLAG_NULLABLE 2
62#define ARROW_FLAG_MAP_KEYS_SORTED 4
63
65 // Array type description
66 const char* format;
67 const char* name;
68 const char* metadata;
69 int64_t flags;
70 int64_t n_children;
73
74 // Release callback
75 void (*release)(struct ArrowSchema*);
76 // Opaque producer-specific data
78};
79
80struct ArrowArray {
81 // Array data description
82 int64_t length;
83 int64_t null_count;
84 int64_t offset;
85 int64_t n_buffers;
86 int64_t n_children;
87 const void** buffers;
90
91 // Release callback
92 void (*release)(struct ArrowArray*);
93 // Opaque producer-specific data
95};
96
97#endif // ARROW_C_DATA_INTERFACE
98
99#ifdef __cplusplus
100}
101#endif
102
103#ifdef __cplusplus
104#define KUZU_C_API extern "C" KUZU_API
105#else
106#define KUZU_C_API KUZU_API
107#endif
108
112typedef struct {
113 // bufferPoolSize Max size of the buffer pool in bytes.
114 // The larger the buffer pool, the more data from the database files is kept in memory,
115 // reducing the amount of File I/O
117 // The maximum number of threads to use during query execution
119 // Whether or not to compress data on-disk for supported types
121 // If true, open the database in read-only mode. No write transaction is allowed on the Database
122 // object. If false, open the database read-write.
124 // The maximum size of the database in bytes. Note that this is introduced temporarily for now
125 // to get around with the default 8TB mmap address space limit under some environment. This
126 // will be removed once we implemente a better solution later. The value is default to 1 << 43
127 // (8TB) under 64-bit environment and 1GB under 32-bit one (see `DEFAULT_VM_REGION_MAX_SIZE`).
128 uint64_t max_db_size;
129 // If true, the database will automatically checkpoint when the size of
130 // the WAL file exceeds the checkpoint threshold.
132 // The threshold of the WAL file size in bytes. When the size of the
133 // WAL file exceeds this threshold, the database will checkpoint if auto_checkpoint is true.
136
140typedef struct {
143
149typedef struct {
152
161
165typedef struct {
169
173typedef struct {
177
181typedef struct {
184
188typedef struct {
189 void* _value;
191} kuzu_value;
192
196typedef struct {
197 uint64_t table_id;
198 uint64_t offset;
200
204typedef struct {
205 // Days since 1970-01-01 00:00:00 UTC.
206 int32_t days;
208
213typedef struct {
214 // Nanoseconds since 1970-01-01 00:00:00 UTC.
215 int64_t value;
217
222typedef struct {
223 // Milliseconds since 1970-01-01 00:00:00 UTC.
224 int64_t value;
226
231typedef struct {
232 // Seconds since 1970-01-01 00:00:00 UTC.
233 int64_t value;
235
240typedef struct {
241 // Microseconds since 1970-01-01 00:00:00 UTC.
242 int64_t value;
244
249typedef struct {
250 // Microseconds since 1970-01-01 00:00:00 UTC.
251 int64_t value;
253
257typedef struct {
258 int32_t months;
259 int32_t days;
260 int64_t micros;
262
267typedef struct {
270
271typedef struct {
272 uint64_t low;
273 int64_t high;
275
279typedef enum {
284 // SERIAL is a special data type that is used to represent a sequence of INT64 values that are
285 // incremented by 1 starting from 0.
287 // fixed size types
309 // variable size types
318 KUZU_UUID = 59
320
324typedef enum { KuzuSuccess = 0, KuzuError = 1 } kuzu_state;
325
326// Database
336KUZU_C_API kuzu_state kuzu_database_init(const char* database_path,
337 kuzu_system_config system_config, kuzu_database* out_database);
343
345
346// Connection
355 kuzu_connection* out_connection);
368 uint64_t num_threads);
369
378 uint64_t* out_result);
387 kuzu_query_result* out_query_result);
396 kuzu_prepared_statement* out_prepared_statement);
405 kuzu_prepared_statement* prepared_statement, kuzu_query_result* out_query_result);
418 uint64_t timeout_in_ms);
419
420// PreparedStatement
435 kuzu_prepared_statement* prepared_statement);
444 const char* param_name, bool value);
453 kuzu_prepared_statement* prepared_statement, const char* param_name, int64_t value);
462 kuzu_prepared_statement* prepared_statement, const char* param_name, int32_t value);
471 kuzu_prepared_statement* prepared_statement, const char* param_name, int16_t value);
480 const char* param_name, int8_t value);
489 kuzu_prepared_statement* prepared_statement, const char* param_name, uint64_t value);
498 kuzu_prepared_statement* prepared_statement, const char* param_name, uint32_t value);
507 kuzu_prepared_statement* prepared_statement, const char* param_name, uint16_t value);
516 kuzu_prepared_statement* prepared_statement, const char* param_name, uint8_t value);
517
526 kuzu_prepared_statement* prepared_statement, const char* param_name, double value);
535 kuzu_prepared_statement* prepared_statement, const char* param_name, float value);
544 const char* param_name, kuzu_date_t value);
553 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_timestamp_ns_t value);
562 kuzu_prepared_statement* prepared_statement, const char* param_name,
572 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_timestamp_tz_t value);
581 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_timestamp_ms_t value);
590 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_timestamp_t value);
599 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_interval_t value);
608 kuzu_prepared_statement* prepared_statement, const char* param_name, const char* value);
617 kuzu_prepared_statement* prepared_statement, const char* param_name, kuzu_value* value);
618
619// QueryResult
649 uint64_t index, char** out_column_name);
658 uint64_t index, kuzu_logical_type* out_column_data_type);
671 kuzu_query_summary* out_query_summary);
684 kuzu_flat_tuple* out_flat_tuple);
699 kuzu_query_result* out_next_query_result);
700
712
723 struct ArrowSchema* out_schema);
724
737 int64_t chunk_size, struct ArrowArray* out_arrow_array);
738
739// FlatTuple
753 kuzu_value* out_value);
760
761// DataType
762// TODO(Chang): Refactor the datatype constructor to follow the cpp way of creating dataTypes.
773 uint64_t num_elements_in_array, kuzu_logical_type* out_type);
804 uint64_t* out_result);
805
806// Value
827KUZU_C_API void kuzu_value_set_null(kuzu_value* value, bool is_null);
971KUZU_C_API kuzu_state kuzu_value_create_list(uint64_t num_elements, kuzu_value** elements,
972 kuzu_value** out_value);
985KUZU_C_API kuzu_state kuzu_value_create_struct(uint64_t num_fields, const char** field_names,
986 kuzu_value** field_values, kuzu_value** out_value);
1000 kuzu_value** values, kuzu_value** out_value);
1034 kuzu_value* out_value);
1051 char** out_result);
1061 kuzu_value* out_value);
1062
1079 kuzu_value* out_key);
1089 kuzu_value* out_value);
1098 kuzu_value* out_value);
1099
1107 kuzu_value* out_value);
1240 kuzu_timestamp_ns_t* out_result);
1248 kuzu_timestamp_ms_t* out_result);
1257 kuzu_timestamp_sec_t* out_result);
1265 kuzu_timestamp_tz_t* out_result);
1339 char** out_result);
1348 kuzu_value* out_value);
1393 char** out_result);
1402 kuzu_value* out_value);
1424KUZU_C_API void kuzu_destroy_blob(uint8_t* blob);
1425
1426// QuerySummary
1442
1443// Utility functions
1465 struct tm* out_result);
1548KUZU_C_API void kuzu_interval_to_difftime(kuzu_interval_t interval, double* out_result);
1554KUZU_C_API void kuzu_interval_from_difftime(double difftime, kuzu_interval_t* out_result);
1555
1556// Version
1561
1566#undef KUZU_C_API
KUZU_C_API char * kuzu_query_result_to_string(kuzu_query_result *query_result)
Returns the query result as a string.
KUZU_C_API kuzu_value * kuzu_value_create_timestamp(kuzu_timestamp_t val_)
Creates a value with timestamp type and the given timestamp value. Caller is responsible for destroyi...
KUZU_C_API kuzu_state kuzu_connection_init(kuzu_database *database, kuzu_connection *out_connection)
Allocates memory and creates a connection to the database. Caller is responsible for calling kuzu_con...
KUZU_C_API bool kuzu_prepared_statement_is_success(kuzu_prepared_statement *prepared_statement)
KUZU_C_API void kuzu_value_get_data_type(kuzu_value *value, kuzu_logical_type *out_type)
Returns internal type of the given value.
KUZU_C_API kuzu_state kuzu_connection_prepare(kuzu_connection *connection, const char *query, kuzu_prepared_statement *out_prepared_statement)
Prepares the given query and returns the prepared statement.
KUZU_C_API bool kuzu_query_result_has_next(kuzu_query_result *query_result)
Returns true if we have not consumed all tuples in the query result, false otherwise.
KUZU_C_API kuzu_state kuzu_timestamp_sec_from_tm(struct tm tm, kuzu_timestamp_sec_t *out_result)
Convert tm struct to timestamp_sec value.
KUZU_C_API kuzu_state kuzu_node_val_get_property_size(kuzu_value *node_val, uint64_t *out_value)
Returns the number of properties of the given node value.
KUZU_C_API kuzu_value * kuzu_value_create_internal_id(kuzu_internal_id_t val_)
Creates a value with internal_id type and the given internal_id value. Caller is responsible for dest...
KUZU_C_API double kuzu_query_summary_get_compiling_time(kuzu_query_summary *query_summary)
Returns the compilation time of the given query summary in milliseconds.
KUZU_C_API bool kuzu_value_is_null(kuzu_value *value)
Returns true if the given value is NULL, false otherwise.
KUZU_C_API kuzu_state kuzu_query_result_get_next(kuzu_query_result *query_result, kuzu_flat_tuple *out_flat_tuple)
Returns the next tuple in the query result. Throws an exception if there is no more tuple.
KUZU_C_API kuzu_state kuzu_connection_set_max_num_thread_for_exec(kuzu_connection *connection, uint64_t num_threads)
Sets the maximum number of threads to use for executing queries.
KUZU_C_API kuzu_value * kuzu_value_create_interval(kuzu_interval_t val_)
Creates a value with interval type and the given interval value. Caller is responsible for destroying...
KUZU_C_API void kuzu_data_type_destroy(kuzu_logical_type *data_type)
Destroys the given data type instance.
KUZU_C_API kuzu_state kuzu_value_get_struct_field_value(kuzu_value *value, uint64_t index, kuzu_value *out_value)
Returns the field value at index of the given struct value. The value must be of physical type STRUCT...
KUZU_C_API kuzu_state kuzu_timestamp_tz_to_tm(kuzu_timestamp_tz_t timestamp, struct tm *out_result)
Convert timestamp_tz to corresponding tm struct.
KUZU_C_API kuzu_state kuzu_value_get_float(kuzu_value *value, float *out_result)
Returns the float value of the given value. The value must be of type FLOAT.
KUZU_C_API kuzu_state kuzu_database_init(const char *database_path, kuzu_system_config system_config, kuzu_database *out_database)
Allocates memory and creates a kuzu database instance at database_path with bufferPoolSize=buffer_poo...
KUZU_C_API kuzu_state kuzu_rel_val_get_src_id_val(kuzu_value *rel_val, kuzu_value *out_value)
Returns the internal id value of the source node of the given rel value as a kuzu value.
KUZU_C_API void kuzu_query_summary_destroy(kuzu_query_summary *query_summary)
Destroys the given query summary.
KUZU_C_API kuzu_value * kuzu_value_create_timestamp_sec(kuzu_timestamp_sec_t val_)
Creates a value with timestamp_sec type and the given timestamp value. Caller is responsible for dest...
KUZU_C_API kuzu_state kuzu_connection_execute(kuzu_connection *connection, kuzu_prepared_statement *prepared_statement, kuzu_query_result *out_query_result)
Executes the prepared_statement using connection.
KUZU_C_API kuzu_state kuzu_query_result_get_column_data_type(kuzu_query_result *query_result, uint64_t index, kuzu_logical_type *out_column_data_type)
Returns the data type of the column at the given index.
KUZU_C_API kuzu_state kuzu_rel_val_get_property_size(kuzu_value *rel_val, uint64_t *out_value)
Returns the number of properties of the given rel value.
KUZU_C_API kuzu_state kuzu_value_get_int32(kuzu_value *value, int32_t *out_result)
Returns the int32 value of the given value. The value must be of type INT32.
KUZU_C_API char * kuzu_prepared_statement_get_error_message(kuzu_prepared_statement *prepared_statement)
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_int64(kuzu_prepared_statement *prepared_statement, const char *param_name, int64_t value)
Binds the given int64_t value to the given parameter name in the prepared statement.
KUZU_C_API char * kuzu_get_version()
Returns the version of the Kùzu library.
KUZU_C_API void kuzu_prepared_statement_destroy(kuzu_prepared_statement *prepared_statement)
Destroys the prepared statement instance and frees the allocated memory.
KUZU_C_API kuzu_state kuzu_int128_t_to_string(kuzu_int128_t val, char **out_result)
convert int128 to corresponding string.
KUZU_C_API kuzu_state kuzu_value_get_int128(kuzu_value *value, kuzu_int128_t *out_result)
Returns the int128 value of the given value. The value must be of type INT128.
KUZU_C_API void kuzu_query_result_reset_iterator(kuzu_query_result *query_result)
Resets the iterator of the query result to the beginning of the query result.
KUZU_C_API kuzu_state kuzu_value_get_uint32(kuzu_value *value, uint32_t *out_result)
Returns the uint32 value of the given value. The value must be of type UINT32.
KUZU_C_API kuzu_state kuzu_value_get_map_key(kuzu_value *value, uint64_t index, kuzu_value *out_key)
Returns the key at index of the given map value. The value must be of physical type MAP.
KUZU_C_API void kuzu_destroy_string(char *str)
Destroys any string created by the Kùzu C API, including both the error message and the values return...
KUZU_C_API kuzu_state kuzu_timestamp_ns_to_tm(kuzu_timestamp_ns_t timestamp, struct tm *out_result)
Convert timestamp_ns to corresponding tm struct.
KUZU_C_API kuzu_state kuzu_value_get_uint16(kuzu_value *value, uint16_t *out_result)
Returns the uint16 value of the given value. The value must be of type UINT16.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_bool(kuzu_prepared_statement *prepared_statement, const char *param_name, bool value)
Binds the given boolean value to the given parameter name in the prepared statement.
kuzu_data_type_id
enum class for kuzu internal dataTypes.
Definition kuzu.h:279
@ KUZU_UINT64
Definition kuzu.h:293
@ KUZU_INT16
Definition kuzu.h:291
@ KUZU_UINT16
Definition kuzu.h:295
@ KUZU_UUID
Definition kuzu.h:318
@ KUZU_DOUBLE
Definition kuzu.h:298
@ KUZU_TIMESTAMP_MS
Definition kuzu.h:303
@ KUZU_INT8
Definition kuzu.h:292
@ KUZU_DECIMAL
Definition kuzu.h:307
@ KUZU_NODE
Definition kuzu.h:281
@ KUZU_BLOB
Definition kuzu.h:311
@ KUZU_TIMESTAMP_SEC
Definition kuzu.h:302
@ KUZU_STRING
Definition kuzu.h:310
@ KUZU_TIMESTAMP_TZ
Definition kuzu.h:305
@ KUZU_TIMESTAMP
Definition kuzu.h:301
@ KUZU_INTERNAL_ID
Definition kuzu.h:308
@ KUZU_MAP
Definition kuzu.h:315
@ KUZU_REL
Definition kuzu.h:282
@ KUZU_UNION
Definition kuzu.h:316
@ KUZU_UINT32
Definition kuzu.h:294
@ KUZU_INTERVAL
Definition kuzu.h:306
@ KUZU_ARRAY
Definition kuzu.h:313
@ KUZU_POINTER
Definition kuzu.h:317
@ KUZU_INT64
Definition kuzu.h:289
@ KUZU_BOOL
Definition kuzu.h:288
@ KUZU_RECURSIVE_REL
Definition kuzu.h:283
@ KUZU_STRUCT
Definition kuzu.h:314
@ KUZU_ANY
Definition kuzu.h:280
@ KUZU_INT32
Definition kuzu.h:290
@ KUZU_UINT8
Definition kuzu.h:296
@ KUZU_LIST
Definition kuzu.h:312
@ KUZU_INT128
Definition kuzu.h:297
@ KUZU_TIMESTAMP_NS
Definition kuzu.h:304
@ KUZU_FLOAT
Definition kuzu.h:299
@ KUZU_SERIAL
Definition kuzu.h:286
@ KUZU_DATE
Definition kuzu.h:300
KUZU_C_API void kuzu_database_destroy(kuzu_database *database)
Destroys the kuzu database instance and frees the allocated memory.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_float(kuzu_prepared_statement *prepared_statement, const char *param_name, float value)
Binds the given float value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_system_config kuzu_default_system_config()
KUZU_C_API kuzu_state kuzu_value_get_blob(kuzu_value *value, uint8_t **out_result)
Returns the blob value of the given value. The returned buffer is null-terminated similar to a string...
KUZU_C_API kuzu_state kuzu_timestamp_ms_to_tm(kuzu_timestamp_ms_t timestamp, struct tm *out_result)
Convert timestamp_ms to corresponding tm struct.
#define KUZU_C_API
Definition kuzu.h:106
KUZU_C_API void kuzu_interval_from_difftime(double difftime, kuzu_interval_t *out_result)
Convert difftime value in seconds to interval.
KUZU_C_API kuzu_state kuzu_value_get_internal_id(kuzu_value *value, kuzu_internal_id_t *out_result)
Returns the internal id value of the given value. The value must be of type INTERNAL_ID.
KUZU_C_API kuzu_state kuzu_value_get_int16(kuzu_value *value, int16_t *out_result)
Returns the int16 value of the given value. The value must be of type INT16.
KUZU_C_API kuzu_state kuzu_date_from_tm(struct tm tm, kuzu_date_t *out_result)
Convert tm struct to date value.
KUZU_C_API void kuzu_query_result_destroy(kuzu_query_result *query_result)
Destroys the given query result instance.
KUZU_C_API kuzu_value * kuzu_value_create_timestamp_tz(kuzu_timestamp_tz_t val_)
Creates a value with timestamp_tz type and the given timestamp value. Caller is responsible for destr...
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_timestamp_tz(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_timestamp_tz_t value)
Binds the given timestamp_tz value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_value_get_bool(kuzu_value *value, bool *out_result)
Returns the boolean value of the given value. The value must be of type BOOL.
KUZU_C_API bool kuzu_query_result_is_success(kuzu_query_result *query_result)
Returns true if the query is executed successful, false otherwise.
KUZU_C_API kuzu_state kuzu_query_result_get_arrow_schema(kuzu_query_result *query_result, struct ArrowSchema *out_schema)
Returns the query result's schema as ArrowSchema.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_string(kuzu_prepared_statement *prepared_statement, const char *param_name, const char *value)
Binds the given string value to the given parameter name in the prepared statement.
kuzu_state
enum class for kuzu function return state.
Definition kuzu.h:324
@ KuzuSuccess
Definition kuzu.h:324
@ KuzuError
Definition kuzu.h:324
KUZU_C_API kuzu_value * kuzu_value_create_int64(int64_t val_)
Creates a value with int64 type and the given int64 value. Caller is responsible for destroying the r...
KUZU_C_API void kuzu_data_type_create(kuzu_data_type_id id, kuzu_logical_type *child_type, uint64_t num_elements_in_array, kuzu_logical_type *out_type)
Creates a data type instance with the given id, childType and num_elements_in_array....
KUZU_C_API kuzu_value * kuzu_value_create_timestamp_ms(kuzu_timestamp_ms_t val_)
Creates a value with timestamp_ms type and the given timestamp value. Caller is responsible for destr...
KUZU_C_API kuzu_state kuzu_value_get_map_size(kuzu_value *value, uint64_t *out_result)
Returns the size of the given map value. The value must be of type MAP.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_int16(kuzu_prepared_statement *prepared_statement, const char *param_name, int16_t value)
Binds the given int16_t value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_value_get_recursive_rel_rel_list(kuzu_value *value, kuzu_value *out_value)
Returns the list of rels for recursive rel value. The value must be of type RECURSIVE_REL.
KUZU_C_API kuzu_state kuzu_value_get_date(kuzu_value *value, kuzu_date_t *out_result)
Returns the date value of the given value. The value must be of type DATE.
KUZU_C_API kuzu_state kuzu_value_get_interval(kuzu_value *value, kuzu_interval_t *out_result)
Returns the interval value of the given value. The value must be of type INTERVAL.
KUZU_C_API kuzu_state kuzu_value_get_timestamp_tz(kuzu_value *value, kuzu_timestamp_tz_t *out_result)
Returns the timestamp_tz value of the given value. The value must be of type TIMESTAMP_TZ.
KUZU_C_API kuzu_state kuzu_query_result_get_query_summary(kuzu_query_result *query_result, kuzu_query_summary *out_query_summary)
Returns the query summary of the query result.
KUZU_C_API kuzu_state kuzu_value_get_struct_field_name(kuzu_value *value, uint64_t index, char **out_result)
Returns the field name at index of the given struct value. The value must be of physical type STRUCT ...
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_timestamp_ns(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_timestamp_ns_t value)
Binds the given timestamp_ns value to the given parameter name in the prepared statement.
KUZU_C_API void kuzu_connection_destroy(kuzu_connection *connection)
Destroys the connection instance and frees the allocated memory.
KUZU_C_API kuzu_state kuzu_connection_get_max_num_thread_for_exec(kuzu_connection *connection, uint64_t *out_result)
Returns the maximum number of threads of the connection to use for executing queries.
KUZU_C_API uint64_t kuzu_get_storage_version()
Returns the storage version of the Kùzu library.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_int32(kuzu_prepared_statement *prepared_statement, const char *param_name, int32_t value)
Binds the given int32_t value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_node_val_to_string(kuzu_value *node_val, char **out_result)
Converts the given node value to string.
KUZU_C_API kuzu_state kuzu_rel_val_get_property_name_at(kuzu_value *rel_val, uint64_t index, char **out_result)
Returns the property name of the given rel value at the given index.
KUZU_C_API kuzu_state kuzu_value_create_map(uint64_t num_fields, kuzu_value **keys, kuzu_value **values, kuzu_value **out_value)
Creates a map value with the given number of fields and the given keys and values....
KUZU_C_API kuzu_state kuzu_value_get_timestamp_sec(kuzu_value *value, kuzu_timestamp_sec_t *out_result)
Returns the timestamp_sec value of the given value. The value must be of type TIMESTAMP_SEC.
KUZU_C_API kuzu_state kuzu_rel_val_get_label_val(kuzu_value *rel_val, kuzu_value *out_value)
Returns the label value of the given rel value.
KUZU_C_API kuzu_state kuzu_timestamp_ns_from_tm(struct tm tm, kuzu_timestamp_ns_t *out_result)
Convert tm struct to timestamp_ns value.
KUZU_C_API kuzu_value * kuzu_value_create_bool(bool val_)
Creates a value with boolean type and the given bool value. Caller is responsible for destroying the ...
KUZU_C_API kuzu_state kuzu_value_get_int64(kuzu_value *value, int64_t *out_result)
Returns the int64 value of the given value. The value must be of type INT64 or SERIAL.
KUZU_C_API double kuzu_query_summary_get_execution_time(kuzu_query_summary *query_summary)
Returns the execution time of the given query summary in milliseconds.
KUZU_C_API kuzu_state kuzu_node_val_get_label_val(kuzu_value *node_val, kuzu_value *out_value)
Returns the label value of the given node value as a label value.
KUZU_C_API kuzu_state kuzu_node_val_get_property_value_at(kuzu_value *node_val, uint64_t index, kuzu_value *out_value)
Returns the property value of the given node value at the given index.
KUZU_C_API kuzu_state kuzu_node_val_get_id_val(kuzu_value *node_val, kuzu_value *out_value)
Returns the internal id value of the given node value as a kuzu value.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_interval(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_interval_t value)
Binds the given interval value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_value * kuzu_value_create_uint16(uint16_t val_)
Creates a value with uint16 type and the given uint16 value. Caller is responsible for destroying the...
KUZU_C_API void kuzu_data_type_clone(kuzu_logical_type *data_type, kuzu_logical_type *out_type)
Creates a new data type instance by cloning the given data type instance.
KUZU_C_API kuzu_state kuzu_timestamp_tz_from_tm(struct tm tm, kuzu_timestamp_tz_t *out_result)
Convert tm struct to timestamp_tz value.
KUZU_C_API kuzu_state kuzu_date_from_string(const char *str, kuzu_date_t *out_result)
Convert a string to date value.
KUZU_C_API void kuzu_value_copy(kuzu_value *value, kuzu_value *other)
Copies the other value to the value.
KUZU_C_API kuzu_state kuzu_value_get_string(kuzu_value *value, char **out_result)
Returns the string value of the given value. The value must be of type STRING.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_value(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_value *value)
Binds the given kuzu value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_value * kuzu_value_create_double(double val_)
Creates a value with double type and the given double value. Caller is responsible for destroying the...
KUZU_C_API kuzu_value * kuzu_value_create_string(const char *val_)
Creates a value with string type and the given string value. Caller is responsible for destroying the...
KUZU_C_API kuzu_state kuzu_value_create_list(uint64_t num_elements, kuzu_value **elements, kuzu_value **out_value)
Creates a list value with the given number of elements and the given elements. The caller needs to ma...
KUZU_C_API kuzu_value * kuzu_value_create_default(kuzu_logical_type *data_type)
Creates a value of the given data type with default non-NULL value. Caller is responsible for destroy...
KUZU_C_API kuzu_state kuzu_value_get_timestamp_ns(kuzu_value *value, kuzu_timestamp_ns_t *out_result)
Returns the timestamp_ns value of the given value. The value must be of type TIMESTAMP_NS.
KUZU_C_API uint64_t kuzu_query_result_get_num_columns(kuzu_query_result *query_result)
Returns the number of columns in the query result.
KUZU_C_API kuzu_state kuzu_value_get_uuid(kuzu_value *value, char **out_result)
Returns the uuid value of the given value. to a string. The value must be of type UUID.
KUZU_C_API kuzu_state kuzu_rel_val_get_property_value_at(kuzu_value *rel_val, uint64_t index, kuzu_value *out_value)
Returns the property of the given rel value at the given index as kuzu value.
KUZU_C_API kuzu_state kuzu_value_get_int8(kuzu_value *value, int8_t *out_result)
Returns the int8 value of the given value. The value must be of type INT8.
KUZU_C_API kuzu_value * kuzu_value_create_int32(int32_t val_)
Creates a value with int32 type and the given int32 value. Caller is responsible for destroying the r...
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_timestamp_sec(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_timestamp_sec_t value)
Binds the given timestamp_sec value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_uint64(kuzu_prepared_statement *prepared_statement, const char *param_name, uint64_t value)
Binds the given uint64_t value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_value_get_map_value(kuzu_value *value, uint64_t index, kuzu_value *out_value)
Returns the field value at index of the given map value. The value must be of physical type MAP.
KUZU_C_API kuzu_state kuzu_int128_t_from_string(const char *str, kuzu_int128_t *out_result)
convert a string to int128 value.
KUZU_C_API kuzu_value * kuzu_value_create_float(float val_)
Creates a value with float type and the given float value. Caller is responsible for destroying the r...
KUZU_C_API kuzu_state kuzu_value_get_uint64(kuzu_value *value, uint64_t *out_result)
Returns the uint64 value of the given value. The value must be of type UINT64.
KUZU_C_API void kuzu_flat_tuple_destroy(kuzu_flat_tuple *flat_tuple)
Destroys the given flat tuple instance.
KUZU_C_API void kuzu_connection_interrupt(kuzu_connection *connection)
Interrupts the current query execution in the connection.
KUZU_C_API kuzu_state kuzu_value_get_struct_num_fields(kuzu_value *value, uint64_t *out_result)
Returns the number of fields of the given struct value. The value must be of type STRUCT.
KUZU_C_API kuzu_value * kuzu_value_clone(kuzu_value *value)
Creates a new value based on the given value. Caller is responsible for destroying the returned value...
KUZU_C_API kuzu_value * kuzu_value_create_uint32(uint32_t val_)
Creates a value with uint32 type and the given uint32 value. Caller is responsible for destroying the...
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_timestamp(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_timestamp_t value)
Binds the given timestamp value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_timestamp_to_tm(kuzu_timestamp_t timestamp, struct tm *out_result)
Convert timestamp to corresponding tm struct.
KUZU_C_API kuzu_state kuzu_query_result_get_next_arrow_chunk(kuzu_query_result *query_result, int64_t chunk_size, struct ArrowArray *out_arrow_array)
Returns the next chunk of the query result as ArrowArray.
KUZU_C_API char * kuzu_query_result_get_error_message(kuzu_query_result *query_result)
Returns the error message if the query is failed.
KUZU_C_API kuzu_state kuzu_data_type_get_num_elements_in_array(kuzu_logical_type *data_type, uint64_t *out_result)
Returns the number of elements for array.
KUZU_C_API kuzu_state kuzu_timestamp_from_tm(struct tm tm, kuzu_timestamp_t *out_result)
Convert timestamp_ns to corresponding string.
KUZU_C_API kuzu_state kuzu_flat_tuple_get_value(kuzu_flat_tuple *flat_tuple, uint64_t index, kuzu_value *out_value)
Returns the value at index of the flat tuple.
KUZU_C_API kuzu_state kuzu_date_to_string(kuzu_date_t date, char **out_result)
Convert date to corresponding string.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_date(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_date_t value)
Binds the given date value to the given parameter name in the prepared statement.
KUZU_C_API void kuzu_interval_to_difftime(kuzu_interval_t interval, double *out_result)
Convert interval to corresponding difftime value in seconds.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_uint16(kuzu_prepared_statement *prepared_statement, const char *param_name, uint16_t value)
Binds the given uint16_t value to the given parameter name in the prepared statement.
KUZU_C_API char * kuzu_flat_tuple_to_string(kuzu_flat_tuple *flat_tuple)
Converts the flat tuple to a string.
KUZU_C_API kuzu_state kuzu_value_get_decimal_as_string(kuzu_value *value, char **out_result)
Returns the decimal value of the given value as a string. The value must be of type DECIMAL.
KUZU_C_API kuzu_value * kuzu_value_create_uint64(uint64_t val_)
Creates a value with uint64 type and the given uint64 value. Caller is responsible for destroying the...
KUZU_C_API kuzu_value * kuzu_value_create_date(kuzu_date_t val_)
Creates a value with date type and the given date value. Caller is responsible for destroying the ret...
KUZU_C_API kuzu_state kuzu_value_get_list_size(kuzu_value *value, uint64_t *out_result)
Returns the number of elements per list of the given value. The value must be of type ARRAY.
KUZU_C_API kuzu_state kuzu_value_get_timestamp_ms(kuzu_value *value, kuzu_timestamp_ms_t *out_result)
Returns the timestamp_ms value of the given value. The value must be of type TIMESTAMP_MS.
KUZU_C_API kuzu_state kuzu_value_get_double(kuzu_value *value, double *out_result)
Returns the double value of the given value. The value must be of type DOUBLE.
KUZU_C_API kuzu_state kuzu_query_result_get_next_query_result(kuzu_query_result *query_result, kuzu_query_result *out_next_query_result)
Returns the next query result. Use this function to loop multiple query statements' results.
KUZU_C_API kuzu_value * kuzu_value_create_null_with_data_type(kuzu_logical_type *data_type)
Creates a value of the given data type. Caller is responsible for destroying the returned value.
KUZU_C_API kuzu_state kuzu_value_get_timestamp(kuzu_value *value, kuzu_timestamp_t *out_result)
Returns the timestamp value of the given value. The value must be of type TIMESTAMP.
KUZU_C_API char * kuzu_value_to_string(kuzu_value *value)
Converts the given value to string.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_double(kuzu_prepared_statement *prepared_statement, const char *param_name, double value)
Binds the given double value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_data_type_id kuzu_data_type_get_id(kuzu_logical_type *data_type)
Returns the enum type id of the given data type.
KUZU_C_API kuzu_state kuzu_value_create_struct(uint64_t num_fields, const char **field_names, kuzu_value **field_values, kuzu_value **out_value)
Creates a struct value with the given number of fields and the given field names and values....
KUZU_C_API kuzu_state kuzu_query_result_get_column_name(kuzu_query_result *query_result, uint64_t index, char **out_column_name)
Returns the column name at the given index.
KUZU_C_API kuzu_state kuzu_timestamp_sec_to_tm(kuzu_timestamp_sec_t timestamp, struct tm *out_result)
Convert timestamp_sec to corresponding tm struct.
KUZU_C_API kuzu_state kuzu_timestamp_ms_from_tm(struct tm tm, kuzu_timestamp_ms_t *out_result)
Convert tm struct to timestamp_ms value.
KUZU_C_API kuzu_state kuzu_connection_set_query_timeout(kuzu_connection *connection, uint64_t timeout_in_ms)
Sets query timeout value in milliseconds for the connection.
KUZU_C_API kuzu_state kuzu_rel_val_get_dst_id_val(kuzu_value *rel_val, kuzu_value *out_value)
Returns the internal id value of the destination node of the given rel value as a kuzu value.
KUZU_C_API kuzu_value * kuzu_value_create_int128(kuzu_int128_t val_)
Creates a value with int128 type and the given int128 value. Caller is responsible for destroying the...
KUZU_C_API kuzu_state kuzu_value_get_recursive_rel_node_list(kuzu_value *value, kuzu_value *out_value)
Returns the list of nodes for recursive rel value. The value must be of type RECURSIVE_REL.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_uint32(kuzu_prepared_statement *prepared_statement, const char *param_name, uint32_t value)
Binds the given uint32_t value to the given parameter name in the prepared statement.
KUZU_C_API void kuzu_value_destroy(kuzu_value *value)
Destroys the value.
KUZU_C_API kuzu_value * kuzu_value_create_int8(int8_t val_)
Creates a value with int8 type and the given int8 value. Caller is responsible for destroying the ret...
KUZU_C_API kuzu_state kuzu_value_get_list_element(kuzu_value *value, uint64_t index, kuzu_value *out_value)
Returns the element at index of the given value. The value must be of type LIST.
KUZU_C_API kuzu_state kuzu_date_to_tm(kuzu_date_t date, struct tm *out_result)
Convert date to corresponding tm struct.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_timestamp_ms(kuzu_prepared_statement *prepared_statement, const char *param_name, kuzu_timestamp_ms_t value)
Binds the given timestamp_ms value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_int8(kuzu_prepared_statement *prepared_statement, const char *param_name, int8_t value)
Binds the given int8_t value to the given parameter name in the prepared statement.
KUZU_C_API kuzu_state kuzu_node_val_get_property_name_at(kuzu_value *node_val, uint64_t index, char **out_result)
Returns the property name of the given node value at the given index.
KUZU_C_API kuzu_state kuzu_value_get_uint8(kuzu_value *value, uint8_t *out_result)
Returns the uint8 value of the given value. The value must be of type UINT8.
KUZU_C_API void kuzu_destroy_blob(uint8_t *blob)
Destroys any blob created by the Kùzu C API. This function is provided to avoid the inconsistency bet...
KUZU_C_API kuzu_value * kuzu_value_create_null()
Creates a NULL value of ANY type. Caller is responsible for destroying the returned value.
KUZU_C_API kuzu_state kuzu_connection_query(kuzu_connection *connection, const char *query, kuzu_query_result *out_query_result)
Executes the given query and returns the result.
KUZU_C_API kuzu_state kuzu_prepared_statement_bind_uint8(kuzu_prepared_statement *prepared_statement, const char *param_name, uint8_t value)
Binds the given int8_t value to the given parameter name in the prepared statement.
KUZU_C_API uint64_t kuzu_query_result_get_num_tuples(kuzu_query_result *query_result)
Returns the number of tuples in the query result.
KUZU_C_API void kuzu_value_set_null(kuzu_value *value, bool is_null)
Sets the given value to NULL or not.
KUZU_C_API kuzu_value * kuzu_value_create_timestamp_ns(kuzu_timestamp_ns_t val_)
Creates a value with timestamp_ns type and the given timestamp value. Caller is responsible for destr...
KUZU_C_API kuzu_state kuzu_rel_val_to_string(kuzu_value *rel_val, char **out_result)
Converts the given rel value to string.
KUZU_C_API kuzu_value * kuzu_value_create_int16(int16_t val_)
Creates a value with int16 type and the given int16 value. Caller is responsible for destroying the r...
KUZU_C_API kuzu_value * kuzu_value_create_uint8(uint8_t val_)
Creates a value with uint8 type and the given uint8 value. Caller is responsible for destroying the r...
KUZU_C_API bool kuzu_query_result_has_next_query_result(kuzu_query_result *query_result)
Returns true if we have not consumed all query results, false otherwise. Use this function for loop r...
KUZU_C_API bool kuzu_data_type_equals(kuzu_logical_type *data_type1, kuzu_logical_type *data_type2)
Returns true if the given data type is equal to the other data type, false otherwise.
Definition kuzu.h:80
void(* release)(struct ArrowArray *)
Definition kuzu.h:92
void * private_data
Definition kuzu.h:94
int64_t n_children
Definition kuzu.h:86
int64_t null_count
Definition kuzu.h:83
struct ArrowArray ** children
Definition kuzu.h:88
int64_t offset
Definition kuzu.h:84
struct ArrowArray * dictionary
Definition kuzu.h:89
const void ** buffers
Definition kuzu.h:87
int64_t n_buffers
Definition kuzu.h:85
int64_t length
Definition kuzu.h:82
Definition kuzu.h:64
int64_t flags
Definition kuzu.h:69
const char * metadata
Definition kuzu.h:68
int64_t n_children
Definition kuzu.h:70
const char * name
Definition kuzu.h:67
void * private_data
Definition kuzu.h:77
const char * format
Definition kuzu.h:66
struct ArrowSchema * dictionary
Definition kuzu.h:72
void(* release)(struct ArrowSchema *)
Definition kuzu.h:75
struct ArrowSchema ** children
Definition kuzu.h:71
kuzu_connection is used to interact with a Database instance. Each connection is thread-safe....
Definition kuzu.h:149
void * _connection
Definition kuzu.h:150
kuzu_database manages all database components.
Definition kuzu.h:140
void * _database
Definition kuzu.h:141
kuzu internal date type which stores the number of days since 1970-01-01 00:00:00 UTC.
Definition kuzu.h:204
int32_t days
Definition kuzu.h:206
kuzu_flat_tuple stores a vector of values.
Definition kuzu.h:173
void * _flat_tuple
Definition kuzu.h:174
bool _is_owned_by_cpp
Definition kuzu.h:175
Definition kuzu.h:271
int64_t high
Definition kuzu.h:273
uint64_t low
Definition kuzu.h:272
kuzu internal internal_id type which stores the table_id and offset of a node/rel.
Definition kuzu.h:196
uint64_t table_id
Definition kuzu.h:197
uint64_t offset
Definition kuzu.h:198
kuzu internal interval type which stores the months, days and microseconds.
Definition kuzu.h:257
int64_t micros
Definition kuzu.h:260
int32_t months
Definition kuzu.h:258
int32_t days
Definition kuzu.h:259
kuzu_logical_type is the kuzu internal representation of data types.
Definition kuzu.h:181
void * _data_type
Definition kuzu.h:182
kuzu_prepared_statement is a parameterized query which can avoid planning the same query for repeated...
Definition kuzu.h:157
void * _prepared_statement
Definition kuzu.h:158
void * _bound_values
Definition kuzu.h:159
kuzu_query_result stores the result of a query.
Definition kuzu.h:165
void * _query_result
Definition kuzu.h:166
bool _is_owned_by_cpp
Definition kuzu.h:167
kuzu_query_summary stores the execution time, plan, compiling time and query options of a query.
Definition kuzu.h:267
void * _query_summary
Definition kuzu.h:268
Stores runtime configuration for creating or opening a Database.
Definition kuzu.h:112
uint64_t buffer_pool_size
Definition kuzu.h:116
bool read_only
Definition kuzu.h:123
uint64_t max_db_size
Definition kuzu.h:128
bool auto_checkpoint
Definition kuzu.h:131
uint64_t checkpoint_threshold
Definition kuzu.h:134
uint64_t max_num_threads
Definition kuzu.h:118
bool enable_compression
Definition kuzu.h:120
kuzu internal timestamp_ms type which stores the number of milliseconds since 1970-01-01 00:00:00 UTC...
Definition kuzu.h:222
int64_t value
Definition kuzu.h:224
kuzu internal timestamp_ns type which stores the number of nanoseconds since 1970-01-01 00:00:00 UTC.
Definition kuzu.h:213
int64_t value
Definition kuzu.h:215
kuzu internal timestamp_sec_t type which stores the number of seconds since 1970-01-01 00:00:00 UTC.
Definition kuzu.h:231
int64_t value
Definition kuzu.h:233
kuzu internal timestamp type which stores the number of microseconds since 1970-01-01 00:00:00 UTC.
Definition kuzu.h:249
int64_t value
Definition kuzu.h:251
kuzu internal timestamp_tz type which stores the number of microseconds since 1970-01-01 with timezon...
Definition kuzu.h:240
int64_t value
Definition kuzu.h:242
kuzu_value is used to represent a value with any kuzu internal dataType.
Definition kuzu.h:188
void * _value
Definition kuzu.h:189
bool _is_owned_by_cpp
Definition kuzu.h:190