The value class represents a single value of any type.
API Reference Overview
void duckdb_destroy_value(duckdb_value *value);
duckdb_value duckdb_create_varchar(const char *text);
duckdb_value duckdb_create_varchar_length(const char *text, idx_t length);
duckdb_value duckdb_create_bool(bool input);
duckdb_value duckdb_create_int8(int8_t input);
duckdb_value duckdb_create_uint8(uint8_t input);
duckdb_value duckdb_create_int16(int16_t input);
duckdb_value duckdb_create_uint16(uint16_t input);
duckdb_value duckdb_create_int32(int32_t input);
duckdb_value duckdb_create_uint32(uint32_t input);
duckdb_value duckdb_create_uint64(uint64_t input);
duckdb_value duckdb_create_int64(int64_t val);
duckdb_value duckdb_create_hugeint(duckdb_hugeint input);
duckdb_value duckdb_create_uhugeint(duckdb_uhugeint input);
duckdb_value duckdb_create_float(float input);
duckdb_value duckdb_create_double(double input);
duckdb_value duckdb_create_date(duckdb_date input);
duckdb_value duckdb_create_time(duckdb_time input);
duckdb_value duckdb_create_time_tz_value(duckdb_time_tz value);
duckdb_value duckdb_create_timestamp(duckdb_timestamp input);
duckdb_value duckdb_create_interval(duckdb_interval input);
duckdb_value duckdb_create_blob(const uint8_t *data, idx_t length);
bool duckdb_get_bool(duckdb_value val);
int8_t duckdb_get_int8(duckdb_value val);
uint8_t duckdb_get_uint8(duckdb_value val);
int16_t duckdb_get_int16(duckdb_value val);
uint16_t duckdb_get_uint16(duckdb_value val);
int32_t duckdb_get_int32(duckdb_value val);
uint32_t duckdb_get_uint32(duckdb_value val);
int64_t duckdb_get_int64(duckdb_value val);
uint64_t duckdb_get_uint64(duckdb_value val);
duckdb_hugeint duckdb_get_hugeint(duckdb_value val);
duckdb_uhugeint duckdb_get_uhugeint(duckdb_value val);
float duckdb_get_float(duckdb_value val);
double duckdb_get_double(duckdb_value val);
duckdb_date duckdb_get_date(duckdb_value val);
duckdb_time duckdb_get_time(duckdb_value val);
duckdb_time_tz duckdb_get_time_tz(duckdb_value val);
duckdb_timestamp duckdb_get_timestamp(duckdb_value val);
duckdb_interval duckdb_get_interval(duckdb_value val);
duckdb_logical_type duckdb_get_value_type(duckdb_value val);
duckdb_blob duckdb_get_blob(duckdb_value val);
char *duckdb_get_varchar(duckdb_value value);
duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values);
duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
idx_t duckdb_get_map_size(duckdb_value value);
duckdb_value duckdb_get_map_key(duckdb_value value, idx_t index);
duckdb_value duckdb_get_map_value(duckdb_value value, idx_t index);
duckdb_destroy_value
Destroys the value and de-allocates all memory allocated for that type.
Syntax
void duckdb_destroy_value(
duckdb_value *value
);
Parameters
value
: The value to destroy.
duckdb_create_varchar
Creates a value from a null-terminated string
Syntax
duckdb_value duckdb_create_varchar(
const char *text
);
Parameters
text
: The null-terminated string
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_varchar_length
Creates a value from a string
Syntax
duckdb_value duckdb_create_varchar_length(
const char *text,
idx_t length
);
Parameters
text
: The textlength
: The length of the text
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_bool
Creates a value from a boolean
Syntax
duckdb_value duckdb_create_bool(
bool input
);
Parameters
input
: The boolean value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int8
Creates a value from a int8_t (a tinyint)
Syntax
duckdb_value duckdb_create_int8(
int8_t input
);
Parameters
input
: The tinyint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint8
Creates a value from a uint8_t (a utinyint)
Syntax
duckdb_value duckdb_create_uint8(
uint8_t input
);
Parameters
input
: The utinyint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int16
Creates a value from a int16_t (a smallint)
Syntax
duckdb_value duckdb_create_int16(
int16_t input
);
Parameters
input
: The smallint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint16
Creates a value from a uint16_t (a usmallint)
Syntax
duckdb_value duckdb_create_uint16(
uint16_t input
);
Parameters
input
: The usmallint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int32
Creates a value from a int32_t (an integer)
Syntax
duckdb_value duckdb_create_int32(
int32_t input
);
Parameters
input
: The integer value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint32
Creates a value from a uint32_t (a uinteger)
Syntax
duckdb_value duckdb_create_uint32(
uint32_t input
);
Parameters
input
: The uinteger value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint64
Creates a value from a uint64_t (a ubigint)
Syntax
duckdb_value duckdb_create_uint64(
uint64_t input
);
Parameters
input
: The ubigint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int64
Creates a value from an int64
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_int64(
int64_t val
);
duckdb_create_hugeint
Creates a value from a hugeint
Syntax
duckdb_value duckdb_create_hugeint(
duckdb_hugeint input
);
Parameters
input
: The hugeint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uhugeint
Creates a value from a uhugeint
Syntax
duckdb_value duckdb_create_uhugeint(
duckdb_uhugeint input
);
Parameters
input
: The uhugeint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_float
Creates a value from a float
Syntax
duckdb_value duckdb_create_float(
float input
);
Parameters
input
: The float value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_double
Creates a value from a double
Syntax
duckdb_value duckdb_create_double(
double input
);
Parameters
input
: The double value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_date
Creates a value from a date
Syntax
duckdb_value duckdb_create_date(
duckdb_date input
);
Parameters
input
: The date value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time
Creates a value from a time
Syntax
duckdb_value duckdb_create_time(
duckdb_time input
);
Parameters
input
: The time value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time_tz_value
Creates a value from a time_tz.
Not to be confused with duckdb_create_time_tz
, which creates a duckdb_time_tz_t.
Syntax
duckdb_value duckdb_create_time_tz_value(
duckdb_time_tz value
);
Parameters
value
: The time_tz value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_timestamp
Creates a value from a timestamp
Syntax
duckdb_value duckdb_create_timestamp(
duckdb_timestamp input
);
Parameters
input
: The timestamp value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_interval
Creates a value from an interval
Syntax
duckdb_value duckdb_create_interval(
duckdb_interval input
);
Parameters
input
: The interval value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_blob
Creates a value from a blob
Syntax
duckdb_value duckdb_create_blob(
const uint8_t *data,
idx_t length
);
Parameters
data
: The blob datalength
: The length of the blob data
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_get_bool
Returns the boolean value of the given value.
Syntax
bool duckdb_get_bool(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a boolean
Return Value
A boolean, or false if the value cannot be converted
duckdb_get_int8
Returns the int8_t value of the given value.
Syntax
int8_t duckdb_get_int8(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a tinyint
Return Value
A int8_t, or MinValue
duckdb_get_uint8
Returns the uint8_t value of the given value.
Syntax
uint8_t duckdb_get_uint8(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a utinyint
Return Value
A uint8_t, or MinValue
duckdb_get_int16
Returns the int16_t value of the given value.
Syntax
int16_t duckdb_get_int16(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a smallint
Return Value
A int16_t, or MinValue
duckdb_get_uint16
Returns the uint16_t value of the given value.
Syntax
uint16_t duckdb_get_uint16(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a usmallint
Return Value
A uint16_t, or MinValue
duckdb_get_int32
Returns the int32_t value of the given value.
Syntax
int32_t duckdb_get_int32(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a integer
Return Value
A int32_t, or MinValue
duckdb_get_uint32
Returns the uint32_t value of the given value.
Syntax
uint32_t duckdb_get_uint32(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a uinteger
Return Value
A uint32_t, or MinValue
duckdb_get_int64
Returns the int64_t value of the given value.
Syntax
int64_t duckdb_get_int64(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a bigint
Return Value
A int64_t, or MinValue
duckdb_get_uint64
Returns the uint64_t value of the given value.
Syntax
uint64_t duckdb_get_uint64(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a ubigint
Return Value
A uint64_t, or MinValue
duckdb_get_hugeint
Returns the hugeint value of the given value.
Syntax
duckdb_hugeint duckdb_get_hugeint(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a hugeint
Return Value
A duckdb_hugeint, or MinValue
duckdb_get_uhugeint
Returns the uhugeint value of the given value.
Syntax
duckdb_uhugeint duckdb_get_uhugeint(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a uhugeint
Return Value
A duckdb_uhugeint, or MinValue
duckdb_get_float
Returns the float value of the given value.
Syntax
float duckdb_get_float(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a float
Return Value
A float, or NAN if the value cannot be converted
duckdb_get_double
Returns the double value of the given value.
Syntax
double duckdb_get_double(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a double
Return Value
A double, or NAN if the value cannot be converted
duckdb_get_date
Returns the date value of the given value.
Syntax
duckdb_date duckdb_get_date(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a date
Return Value
A duckdb_date, or MinValue
duckdb_get_time
Returns the time value of the given value.
Syntax
duckdb_time duckdb_get_time(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a time
Return Value
A duckdb_time, or MinValue
duckdb_get_time_tz
Returns the time_tz value of the given value.
Syntax
duckdb_time_tz duckdb_get_time_tz(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a time_tz
Return Value
A duckdb_time_tz, or MinValue
duckdb_get_timestamp
Returns the timestamp value of the given value.
Syntax
duckdb_timestamp duckdb_get_timestamp(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a timestamp
Return Value
A duckdb_timestamp, or MinValue
duckdb_get_interval
Returns the interval value of the given value.
Syntax
duckdb_interval duckdb_get_interval(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a interval
Return Value
A duckdb_interval, or MinValue
duckdb_get_value_type
Returns the type of the given value. The type is valid as long as the value is not destroyed. The type itself must not be destroyed.
Syntax
duckdb_logical_type duckdb_get_value_type(
duckdb_value val
);
Parameters
val
: A duckdb_value
Return Value
A duckdb_logical_type.
duckdb_get_blob
Returns the blob value of the given value.
Syntax
duckdb_blob duckdb_get_blob(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a blob
Return Value
A duckdb_blob
duckdb_get_varchar
Obtains a string representation of the given value.
The result must be destroyed with duckdb_free
.
Syntax
char *duckdb_get_varchar(
duckdb_value value
);
Parameters
value
: The value
Return Value
The string value. This must be destroyed with duckdb_free
.
duckdb_create_struct_value
Creates a struct value from a type and an array of values. Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_struct_value(
duckdb_logical_type type,
duckdb_value *values
);
Parameters
type
: The type of the structvalues
: The values for the struct fields
Return Value
The struct value, or nullptr, if any child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_create_list_value
Creates a list value from a child (element) type and an array of values of length value_count
.
Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_list_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: The type of the listvalues
: The values for the listvalue_count
: The number of values in the list
Return Value
The list value, or nullptr, if the child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_create_array_value
Creates an array value from a child (element) type and an array of values of length value_count
.
Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_array_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: The type of the arrayvalues
: The values for the arrayvalue_count
: The number of values in the array
Return Value
The array value, or nullptr, if the child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_get_map_size
Returns the number of elements in a MAP value.
Syntax
idx_t duckdb_get_map_size(
duckdb_value value
);
Parameters
value
: The MAP value.
Return Value
The number of elements in the map.
duckdb_get_map_key
Returns the MAP key at index as a duckdb_value.
Syntax
duckdb_value duckdb_get_map_key(
duckdb_value value,
idx_t index
);
Parameters
value
: The MAP value.index
: The index of the key.
Return Value
The key as a duckdb_value.
duckdb_get_map_value
Returns the MAP value at index as a duckdb_value.
Syntax
duckdb_value duckdb_get_map_value(
duckdb_value value,
idx_t index
);
Parameters
value
: The MAP value.index
: The index of the value.
Return Value
The value as a duckdb_value.