Typen
DuckDB ist ein stark typisiertes Datenbanksystem. Daher hat jede Spalte genau einen festgelegten Typ. Dieser Typ ist über
die gesamte Spalte konstant. Das heißt, eine als INTEGER gekennzeichnete Spalte enthält nur INTEGER-
Werte.
DuckDB unterstützt auch Spalten mit zusammengesetzten Typen. Beispielsweise ist es möglich, ein Array von Ganzzahlen (INTEGER[]) zu definieren. Es ist auch möglich, Typen als beliebige Structs (ROW(i INTEGER, j VARCHAR)) zu definieren. Deshalb sind native DuckDB-Typobjekte keine bloßen Enums, sondern eine Klasse, die potenziell verschachtelt sein kann.
Typen in der C-API werden über ein Enum (duckdb_type) und eine komplexe Klasse (duckdb_logical_type) modelliert. Für die meisten primitiven Typen, z. B. Ganzzahlen oder Varchars, reicht das Enum aus. Für komplexere Typen wie Listen, Structs oder Decimals muss der logische Typ verwendet werden.
typedef enum DUCKDB_TYPE { DUCKDB_TYPE_INVALID = 0, DUCKDB_TYPE_BOOLEAN = 1, DUCKDB_TYPE_TINYINT = 2, DUCKDB_TYPE_SMALLINT = 3, DUCKDB_TYPE_INTEGER = 4, DUCKDB_TYPE_BIGINT = 5, DUCKDB_TYPE_UTINYINT = 6, DUCKDB_TYPE_USMALLINT = 7, DUCKDB_TYPE_UINTEGER = 8, DUCKDB_TYPE_UBIGINT = 9, DUCKDB_TYPE_FLOAT = 10, DUCKDB_TYPE_DOUBLE = 11, DUCKDB_TYPE_TIMESTAMP = 12, DUCKDB_TYPE_DATE = 13, DUCKDB_TYPE_TIME = 14, DUCKDB_TYPE_INTERVAL = 15, DUCKDB_TYPE_HUGEINT = 16, DUCKDB_TYPE_UHUGEINT = 32, DUCKDB_TYPE_VARCHAR = 17, DUCKDB_TYPE_BLOB = 18, DUCKDB_TYPE_DECIMAL = 19, DUCKDB_TYPE_TIMESTAMP_S = 20, DUCKDB_TYPE_TIMESTAMP_MS = 21, DUCKDB_TYPE_TIMESTAMP_NS = 22, DUCKDB_TYPE_ENUM = 23, DUCKDB_TYPE_LIST = 24, DUCKDB_TYPE_STRUCT = 25, DUCKDB_TYPE_MAP = 26, DUCKDB_TYPE_ARRAY = 33, DUCKDB_TYPE_UUID = 27, DUCKDB_TYPE_UNION = 28, DUCKDB_TYPE_BIT = 29, DUCKDB_TYPE_TIME_TZ = 30, DUCKDB_TYPE_TIMESTAMP_TZ = 31,} duckdb_type;Funktionen
Der Enum-Typ einer Spalte im Ergebnis kann mit der Funktion duckdb_column_type ermittelt werden. Der logische Typ einer Spalte kann mit der Funktion duckdb_column_logical_type ermittelt werden.
duckdb_value
Die Funktionen duckdb_value casten Werte bei Bedarf automatisch. Beispielsweise ist es kein Problem,
duckdb_value_double auf einer Spalte vom Typ duckdb_value_int32 zu verwenden. Der Wert wird automatisch gecastet und als Double zurückgegeben.
Beachten Sie, dass der Cast in bestimmten Fällen fehlschlagen kann. Dies kann beispielsweise passieren, wenn wir ein duckdb_value_int8 anfordern und der Wert nicht in einen int8-Wert passt. In diesem Fall wird ein Standardwert zurückgegeben (üblicherweise 0 oder nullptr). Derselbe Standardwert wird auch zurückgegeben, wenn der entsprechende Wert NULL ist.
Die Funktion duckdb_value_is_null kann verwendet werden, um zu prüfen, ob ein bestimmter Wert NULL ist oder nicht.
Die Ausnahme von der Auto-Cast-Regel ist die Funktion duckdb_value_varchar_internal. Diese Funktion castet nicht automatisch und funktioniert nur für VARCHAR-Spalten. Der Grund für die Existenz dieser Funktion ist, dass das Ergebnis nicht freigegeben werden muss.
duckdb_value_varcharundduckdb_value_bloberfordern, dass das Ergebnis mitduckdb_freefreigegeben wird.
duckdb_fetch_chunk
Die Funktion duckdb_fetch_chunk kann verwendet werden, um Data Chunks aus einem DuckDB-Resultset zu lesen, und ist der effizienteste Weg, Daten aus einem DuckDB-Ergebnis über die C-API zu lesen. Sie ist auch der einzige Weg, Daten bestimmter Typen aus einem DuckDB-Ergebnis zu lesen. Beispielsweise unterstützen die Funktionen duckdb_value kein strukturelles Lesen zusammengesetzter Typen (Listen oder Structs) oder komplexerer Typen wie Enums oder Decimals.
Weitere Informationen zu Data Chunks finden Sie in der Dokumentation zu Data Chunks.
API-Referenz im Überblick
duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_index);
bool duckdb_result_is_streaming(duckdb_result result);
idx_t duckdb_result_chunk_count(duckdb_result result);
duckdb_result_type duckdb_result_return_type(duckdb_result result);
Date-Time-Timestamp-Hilfsfunktionen
duckdb_date_struct duckdb_from_date(duckdb_date date);
duckdb_date duckdb_to_date(duckdb_date_struct date);
bool duckdb_is_finite_date(duckdb_date date);
duckdb_time_struct duckdb_from_time(duckdb_time time);
duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset);
duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros);
duckdb_time duckdb_to_time(duckdb_time_struct time);
duckdb_timestamp_struct duckdb_from_timestamp(duckdb_timestamp ts);
duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts);
bool duckdb_is_finite_timestamp(duckdb_timestamp ts);
bool duckdb_is_finite_timestamp_s(duckdb_timestamp_s ts);
bool duckdb_is_finite_timestamp_ms(duckdb_timestamp_ms ts);
bool duckdb_is_finite_timestamp_ns(duckdb_timestamp_ns ts);
Hugeint-Hilfsfunktionen
double duckdb_hugeint_to_double(duckdb_hugeint val);
duckdb_hugeint duckdb_double_to_hugeint(double val);
Decimal-Hilfsfunktionen
duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale);
double duckdb_decimal_to_double(duckdb_decimal val);
Logical-Type-Schnittstelle
duckdb_logical_type duckdb_create_logical_type(duckdb_type type);
char *duckdb_logical_type_get_alias(duckdb_logical_type type);
void duckdb_logical_type_set_alias(duckdb_logical_type type, const char *alias);
duckdb_logical_type duckdb_create_list_type(duckdb_logical_type type);
duckdb_logical_type duckdb_create_array_type(duckdb_logical_type type, idx_t array_size);
duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type);
duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale);
duckdb_type duckdb_get_type_id(duckdb_logical_type type);
uint8_t duckdb_decimal_width(duckdb_logical_type type);
uint8_t duckdb_decimal_scale(duckdb_logical_type type);
duckdb_type duckdb_decimal_internal_type(duckdb_logical_type type);
duckdb_type duckdb_enum_internal_type(duckdb_logical_type type);
uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type);
char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type type);
duckdb_logical_type duckdb_array_type_child_type(duckdb_logical_type type);
idx_t duckdb_array_type_array_size(duckdb_logical_type type);
duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type);
duckdb_logical_type duckdb_map_type_value_type(duckdb_logical_type type);
idx_t duckdb_struct_type_child_count(duckdb_logical_type type);
char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_struct_type_child_type(duckdb_logical_type type, idx_t index);
idx_t duckdb_union_type_member_count(duckdb_logical_type type);
char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_union_type_member_type(duckdb_logical_type type, idx_t index);
void duckdb_destroy_logical_type(duckdb_logical_type *type);
duckdb_state duckdb_register_logical_type(duckdb_connection con, duckdb_logical_type type, duckdb_create_type_info info);
duckdb_result_get_chunk
Warnung Hinweis zur Veraltung. Diese Methode ist zur Entfernung in einer zukünftigen Version vorgesehen.
Holt einen Data Chunk aus dem duckdb_result. Diese Funktion sollte wiederholt aufgerufen werden, bis das Ergebnis erschöpft ist.
Das Ergebnis muss mit duckdb_destroy_data_chunk zerstört werden.
Diese Funktion ersetzt alle duckdb_value-Funktionen sowie die Funktionen duckdb_column_data und duckdb_nullmask_data.
Sie führt zu deutlich besserer Leistung und sollte in neueren Codebasen bevorzugt werden.
Wenn diese Funktion verwendet wird, können keine der anderen Ergebnisfunktionen verwendet werden und umgekehrt (d. h. diese Funktion kann nicht mit den Legacy-Ergebnisfunktionen gemischt werden).
Verwenden Sie duckdb_result_chunk_count, um festzustellen, wie viele Chunks im Ergebnis vorhanden sind.
Syntax
duckdb_data_chunk duckdb_result_get_chunk(
duckdb_result result,
idx_t chunk_index
);
Parameter
result: Das Ergebnisobjekt, von dem der Data Chunk geholt wird.chunk_index: Der Chunk-Index, von dem geholt wird.
Rückgabewert
Der resultierende Data Chunk. Gibt NULL zurück, wenn der Chunk-Index außerhalb des gültigen Bereichs liegt.
duckdb_result_is_streaming
Warnung Hinweis zur Veraltung. Diese Methode ist zur Entfernung in einer zukünftigen Version vorgesehen.
Prüft, ob der Typ des internen Ergebnisses StreamQueryResult ist.
Syntax
bool duckdb_result_is_streaming(
duckdb_result result
);
Parameter
result: Das zu prüfende Ergebnisobjekt.
Rückgabewert
Ob das Ergebnisobjekt vom Typ StreamQueryResult ist
duckdb_result_chunk_count
Warnung Hinweis zur Veraltung. Diese Methode ist zur Entfernung in einer zukünftigen Version vorgesehen.
Gibt die Anzahl der im Ergebnis vorhandenen Data Chunks zurück.
Syntax
idx_t duckdb_result_chunk_count(
duckdb_result result
);
Parameter
result: Das Ergebnisobjekt
Rückgabewert
Anzahl der im Ergebnis vorhandenen Data Chunks.
duckdb_result_return_type
Gibt den return_type des angegebenen Ergebnisses zurück oder DUCKDB_RETURN_TYPE_INVALID bei Fehler
Syntax
duckdb_result_type duckdb_result_return_type(
duckdb_result result
);
Parameter
result: Das Ergebnisobjekt
Rückgabewert
Der return_type
duckdb_from_date
Zerlegt ein duckdb_date-Objekt in Jahr, Monat und Tag (gespeichert als duckdb_date_struct).
Syntax
duckdb_date_struct duckdb_from_date(
duckdb_date date
);
Parameter
date: Das Datumsobjekt, wie aus einerDUCKDB_TYPE_DATE-Spalte erhalten.
Rückgabewert
Das duckdb_date_struct mit den zerlegten Elementen.
duckdb_to_date
Setzt ein duckdb_date aus Jahr, Monat und Tag (duckdb_date_struct) wieder zusammen.
Syntax
duckdb_date duckdb_to_date(
duckdb_date_struct date
);
Parameter
date: Jahr, Monat und Tag, gespeichert in einemduckdb_date_struct.
Rückgabewert
Das duckdb_date-Element.
duckdb_is_finite_date
Prüft ein duckdb_date, um festzustellen, ob es ein endlicher Wert ist.
Syntax
bool duckdb_is_finite_date(
duckdb_date date
);
Parameter
date: Das Datumsobjekt, wie aus einerDUCKDB_TYPE_DATE-Spalte erhalten.
Rückgabewert
True, wenn das Datum endlich ist, false wenn es ±infinity ist.
duckdb_from_time
Zerlegt ein duckdb_time-Objekt in Stunde, Minute, Sekunde und Mikrosekunde (gespeichert als duckdb_time_struct).
Syntax
duckdb_time_struct duckdb_from_time(
duckdb_time time
);
Parameter
time: Das Zeitobjekt, wie aus einerDUCKDB_TYPE_TIME-Spalte erhalten.
Rückgabewert
Das duckdb_time_struct mit den zerlegten Elementen.
duckdb_create_time_tz
Erzeugt ein duckdb_time_tz-Objekt aus Mikros und einem Zeitzonen-Offset.
Syntax
duckdb_time_tz duckdb_create_time_tz(
int64_t micros,
int32_t offset
);
Parameter
micros: Die Mikrosekunden-Komponente der Zeit.offset: Die Zeitzonen-Offset-Komponente der Zeit.
Rückgabewert
Das duckdb_time_tz-Element.
duckdb_from_time_tz
Zerlegt TIME_TZ-Objekte in Mikros und einen Zeitzonen-Offset.
Verwenden Sie duckdb_from_time, um die Mikros weiter in Stunde, Minute, Sekunde und Mikrosekunde zu zerlegen.
Syntax
duckdb_time_tz_struct duckdb_from_time_tz(
duckdb_time_tz micros
);
Parameter
micros: Das Zeitobjekt, wie aus einerDUCKDB_TYPE_TIME_TZ-Spalte erhalten.
duckdb_to_time
Setzt ein duckdb_time aus Stunde, Minute, Sekunde und Mikrosekunde (duckdb_time_struct) wieder zusammen.
Syntax
duckdb_time duckdb_to_time(
duckdb_time_struct time
);
Parameter
time: Stunde, Minute, Sekunde und Mikrosekunde in einemduckdb_time_struct.
Rückgabewert
Das duckdb_time-Element.
duckdb_from_timestamp
Zerlegt ein duckdb_timestamp-Objekt in ein duckdb_timestamp_struct.
Syntax
duckdb_timestamp_struct duckdb_from_timestamp(
duckdb_timestamp ts
);
Parameter
ts: Das ts-Objekt, wie aus einerDUCKDB_TYPE_TIMESTAMP-Spalte erhalten.
Rückgabewert
Das duckdb_timestamp_struct mit den zerlegten Elementen.
duckdb_to_timestamp
Setzt ein duckdb_timestamp aus einem duckdb_timestamp_struct wieder zusammen.
Syntax
duckdb_timestamp duckdb_to_timestamp(
duckdb_timestamp_struct ts
);
Parameter
ts: Die zerlegten Elemente in einemduckdb_timestamp_struct.
Rückgabewert
Das duckdb_timestamp-Element.
duckdb_is_finite_timestamp
Prüft ein duckdb_timestamp, um festzustellen, ob es ein endlicher Wert ist.
Syntax
bool duckdb_is_finite_timestamp(
duckdb_timestamp ts
);
Parameter
ts: Das duckdb_timestamp-Objekt, wie aus einerDUCKDB_TYPE_TIMESTAMP-Spalte erhalten.
Rückgabewert
True, wenn der Timestamp endlich ist, false wenn er ±infinity ist.
duckdb_is_finite_timestamp_s
Prüft ein duckdb_timestamp_s, um festzustellen, ob es ein endlicher Wert ist.
Syntax
bool duckdb_is_finite_timestamp_s(
duckdb_timestamp_s ts
);
Parameter
ts: Das duckdb_timestamp_s-Objekt, wie aus einerDUCKDB_TYPE_TIMESTAMP_S-Spalte erhalten.
Rückgabewert
True, wenn der Timestamp endlich ist, false wenn er ±infinity ist.
duckdb_is_finite_timestamp_ms
Prüft ein duckdb_timestamp_ms, um festzustellen, ob es ein endlicher Wert ist.
Syntax
bool duckdb_is_finite_timestamp_ms(
duckdb_timestamp_ms ts
);
Parameter
ts: Das duckdb_timestamp_ms-Objekt, wie aus einerDUCKDB_TYPE_TIMESTAMP_MS-Spalte erhalten.
Rückgabewert
True, wenn der Timestamp endlich ist, false wenn er ±infinity ist.
duckdb_is_finite_timestamp_ns
Prüft ein duckdb_timestamp_ns, um festzustellen, ob es ein endlicher Wert ist.
Syntax
bool duckdb_is_finite_timestamp_ns(
duckdb_timestamp_ns ts
);
Parameter
ts: Das duckdb_timestamp_ns-Objekt, wie aus einerDUCKDB_TYPE_TIMESTAMP_NS-Spalte erhalten.
Rückgabewert
True, wenn der Timestamp endlich ist, false wenn er ±infinity ist.
duckdb_hugeint_to_double
Konvertiert ein duckdb_hugeint-Objekt (wie aus einer DUCKDB_TYPE_HUGEINT-Spalte erhalten) in ein Double.
Syntax
double duckdb_hugeint_to_double(
duckdb_hugeint val
);
Parameter
val: Der Hugeint-Wert.
Rückgabewert
Das konvertierte double-Element.
duckdb_double_to_hugeint
Konvertiert einen Double-Wert in ein duckdb_hugeint-Objekt.
Wenn die Konvertierung fehlschlägt, weil der Double-Wert zu groß ist, ist das Ergebnis 0.
Syntax
duckdb_hugeint duckdb_double_to_hugeint(
double val
);
Parameter
val: Der Double-Wert.
Rückgabewert
Das konvertierte duckdb_hugeint-Element.
duckdb_double_to_decimal
Konvertiert einen Double-Wert in ein duckdb_decimal-Objekt.
Wenn die Konvertierung fehlschlägt, weil der Double-Wert zu groß ist oder width/scale ungültig sind, ist das Ergebnis 0.
Syntax
duckdb_decimal duckdb_double_to_decimal(
double val,
uint8_t width,
uint8_t scale
);
Parameter
val: Der Double-Wert.
Rückgabewert
Das konvertierte duckdb_decimal-Element.
duckdb_decimal_to_double
Konvertiert ein duckdb_decimal-Objekt (wie aus einer DUCKDB_TYPE_DECIMAL-Spalte erhalten) in ein Double.
Syntax
double duckdb_decimal_to_double(
duckdb_decimal val
);
Parameter
val: Der Decimal-Wert.
Rückgabewert
Das konvertierte double-Element.
duckdb_create_logical_type
Erzeugt einen duckdb_logical_type aus einem primitiven Typ.
Der resultierende logische Typ muss mit duckdb_destroy_logical_type zerstört werden.
Gibt einen ungültigen logischen Typ zurück, wenn der Typ einer der folgenden ist: DUCKDB_TYPE_INVALID, DUCKDB_TYPE_DECIMAL, DUCKDB_TYPE_ENUM,
DUCKDB_TYPE_LIST, DUCKDB_TYPE_STRUCT, DUCKDB_TYPE_MAP, DUCKDB_TYPE_ARRAY oder DUCKDB_TYPE_UNION.
Syntax
duckdb_logical_type duckdb_create_logical_type(
duckdb_type type
);
Parameter
type: Der zu erzeugende primitive Typ.
Rückgabewert
Der logische Typ.
duckdb_logical_type_get_alias
Gibt den Alias eines duckdb_logical_type zurück, falls gesetzt, andernfalls nullptr.
Das Ergebnis muss mit duckdb_free zerstört werden.
Syntax
char *duckdb_logical_type_get_alias(
duckdb_logical_type type
);
Parameter
type: Der logische Typ
Rückgabewert
Der Alias oder nullptr
duckdb_logical_type_set_alias
Setzt den Alias eines duckdb_logical_type.
Syntax
void duckdb_logical_type_set_alias(
duckdb_logical_type type,
const char *alias
);
Parameter
type: Der logische Typalias: Der zu setzende Alias
duckdb_create_list_type
Erzeugt einen LIST-Typ aus seinem Child-Typ.
Der Rückgabetyp muss mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_list_type(
duckdb_logical_type type
);
Parameter
type: Der Child-Typ der Liste
Rückgabewert
Der logische Typ.
duckdb_create_array_type
Erzeugt einen ARRAY-Typ aus seinem Child-Typ.
Der Rückgabetyp muss mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_array_type(
duckdb_logical_type type,
idx_t array_size
);
Parameter
type: Der Child-Typ des Arrays.array_size: Die Anzahl der Elemente im Array.
Rückgabewert
Der logische Typ.
duckdb_create_map_type
Erzeugt einen MAP-Typ aus seinem Key-Typ und Value-Typ.
Der Rückgabetyp muss mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_map_type(
duckdb_logical_type key_type,
duckdb_logical_type value_type
);
Parameter
key_type: Der Key-Typ der Map.value_type: Der Value-Typ der Map.
Rückgabewert
Der logische Typ.
duckdb_create_union_type
Erzeugt einen UNION-Typ aus den übergebenen Arrays.
Der Rückgabetyp muss mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_union_type(
duckdb_logical_type *member_types,
const char **member_names,
idx_t member_count
);
Parameter
member_types: Das Array der Union-Member-Typen.member_names: Die Union-Member-Namen.member_count: Die Anzahl der Union-Member.
Rückgabewert
Der logische Typ.
duckdb_create_struct_type
Erzeugt einen STRUCT-Typ basierend auf den Member-Typen und -Namen.
Der resultierende Typ muss mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_struct_type(
duckdb_logical_type *member_types,
const char **member_names,
idx_t member_count
);
Parameter
member_types: Das Array der Typen der Struct-Member.member_names: Das Array der Namen der Struct-Member.member_count: Die Anzahl der Member des Structs.
Rückgabewert
Der logische Typ.
duckdb_create_enum_type
Erzeugt einen ENUM-Typ aus dem übergebenen Member-Namen-Array.
Der resultierende Typ sollte mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_enum_type(
const char **member_names,
idx_t member_count
);
Parameter
member_names: Das Array der Namen, aus denen das Enum bestehen soll.member_count: Die Anzahl der Elemente, die im Array angegeben wurden.
Rückgabewert
Der logische Typ.
duckdb_create_decimal_type
Erzeugt einen DECIMAL-Typ mit der angegebenen Width und Scale.
Der resultierende Typ sollte mit duckdb_destroy_logical_type zerstört werden.
Syntax
duckdb_logical_type duckdb_create_decimal_type(
uint8_t width,
uint8_t scale
);
Parameter
width: Die Width des Decimal-Typsscale: Die Scale des Decimal-Typs
Rückgabewert
Der logische Typ.
duckdb_get_type_id
Ermittelt das Enum duckdb_type eines duckdb_logical_type.
Syntax
duckdb_type duckdb_get_type_id(
duckdb_logical_type type
);
Parameter
type: Der logische Typ.
Rückgabewert
Die duckdb_type-ID.
duckdb_decimal_width
Ermittelt die Width eines Decimal-Typs.
Syntax
uint8_t duckdb_decimal_width(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Die Width des Decimal-Typs
duckdb_decimal_scale
Ermittelt die Scale eines Decimal-Typs.
Syntax
uint8_t duckdb_decimal_scale(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Die Scale des Decimal-Typs
duckdb_decimal_internal_type
Ermittelt den internen Speichertyp eines Decimal-Typs.
Syntax
duckdb_type duckdb_decimal_internal_type(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Der interne Typ des Decimal-Typs
duckdb_enum_internal_type
Ermittelt den internen Speichertyp eines Enum-Typs.
Syntax
duckdb_type duckdb_enum_internal_type(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Der interne Typ des Enum-Typs
duckdb_enum_dictionary_size
Ermittelt die Dictionary-Größe des Enum-Typs.
Syntax
uint32_t duckdb_enum_dictionary_size(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Die Dictionary-Größe des Enum-Typs
duckdb_enum_dictionary_value
Ermittelt den Dictionary-Wert an der angegebenen Position aus dem Enum.
Das Ergebnis muss mit duckdb_free freigegeben werden.
Syntax
char *duckdb_enum_dictionary_value(
duckdb_logical_type type,
idx_t index
);
Parameter
type: Das logische Typobjektindex: Der Index im Dictionary
Rückgabewert
Der String-Wert des Enum-Typs. Muss mit duckdb_free freigegeben werden.
duckdb_list_type_child_type
Ermittelt den Child-Typ des angegebenen LIST-Typs. Akzeptiert auch MAP-Typen.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_list_type_child_type(
duckdb_logical_type type
);
Parameter
type: Der logische Typ, entweder LIST oder MAP.
Rückgabewert
Der Child-Typ des LIST- oder MAP-Typs.
duckdb_array_type_child_type
Ermittelt den Child-Typ des angegebenen ARRAY-Typs.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_array_type_child_type(
duckdb_logical_type type
);
Parameter
type: Der logische Typ. Muss ARRAY sein.
Rückgabewert
Der Child-Typ des ARRAY-Typs.
duckdb_array_type_array_size
Ermittelt die Array-Größe des angegebenen Array-Typs.
Syntax
idx_t duckdb_array_type_array_size(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Die feste Anzahl von Elementen, die die Werte dieses Array-Typs speichern können.
duckdb_map_type_key_type
Ermittelt den Key-Typ des angegebenen Map-Typs.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_map_type_key_type(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Der Key-Typ des Map-Typs. Muss mit duckdb_destroy_logical_type zerstört werden.
duckdb_map_type_value_type
Ermittelt den Value-Typ des angegebenen Map-Typs.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_map_type_value_type(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Der Value-Typ des Map-Typs. Muss mit duckdb_destroy_logical_type zerstört werden.
duckdb_struct_type_child_count
Gibt die Anzahl der Children eines Struct-Typs zurück.
Syntax
idx_t duckdb_struct_type_child_count(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt
Rückgabewert
Die Anzahl der Children eines Struct-Typs.
duckdb_struct_type_child_name
Ermittelt den Namen des Struct-Childs.
Das Ergebnis muss mit duckdb_free freigegeben werden.
Syntax
char *duckdb_struct_type_child_name(
duckdb_logical_type type,
idx_t index
);
Parameter
type: Das logische Typobjektindex: Der Child-Index
Rückgabewert
Der Name des Struct-Typs. Muss mit duckdb_free freigegeben werden.
duckdb_struct_type_child_type
Ermittelt den Child-Typ des angegebenen Struct-Typs am angegebenen Index.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_struct_type_child_type(
duckdb_logical_type type,
idx_t index
);
Parameter
type: Das logische Typobjektindex: Der Child-Index
Rückgabewert
Der Child-Typ des Struct-Typs. Muss mit duckdb_destroy_logical_type zerstört werden.
duckdb_union_type_member_count
Gibt die Anzahl der Member zurück, die der Union-Typ hat.
Syntax
idx_t duckdb_union_type_member_count(
duckdb_logical_type type
);
Parameter
type: Das logische Typobjekt (Union)
Rückgabewert
Die Anzahl der Member eines Union-Typs.
duckdb_union_type_member_name
Ermittelt den Namen des Union-Members.
Das Ergebnis muss mit duckdb_free freigegeben werden.
Syntax
char *duckdb_union_type_member_name(
duckdb_logical_type type,
idx_t index
);
Parameter
type: Das logische Typobjektindex: Der Child-Index
Rückgabewert
Der Name des Union-Members. Muss mit duckdb_free freigegeben werden.
duckdb_union_type_member_type
Ermittelt den Child-Typ des angegebenen Union-Members am angegebenen Index.
Das Ergebnis muss mit duckdb_destroy_logical_type freigegeben werden.
Syntax
duckdb_logical_type duckdb_union_type_member_type(
duckdb_logical_type type,
idx_t index
);
Parameter
type: Das logische Typobjektindex: Der Child-Index
Rückgabewert
Der Child-Typ des Union-Members. Muss mit duckdb_destroy_logical_type zerstört werden.
duckdb_destroy_logical_type
Zerstört den logischen Typ und gibt den gesamten für diesen Typ allokierten Speicher frei.
Syntax
void duckdb_destroy_logical_type(
duckdb_logical_type *type
);
Parameter
type: Der zu zerstörende logische Typ.
duckdb_register_logical_type
Registriert einen benutzerdefinierten Typ innerhalb der angegebenen Verbindung. Der Typ muss einen Alias haben
Syntax
duckdb_state duckdb_register_logical_type(
duckdb_connection con,
duckdb_logical_type type,
duckdb_create_type_info info
);
Parameter
con: Die zu verwendende Verbindungtype: Der zu registrierende benutzerdefinierte Typ
Rückgabewert
Ob die Registrierung erfolgreich war.