Zum Inhalt springen

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_varchar und duckdb_value_blob erfordern, dass das Ergebnis mit duckdb_free freigegeben 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 einer DUCKDB_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 einem duckdb_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 einer DUCKDB_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 einer DUCKDB_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 einer DUCKDB_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 einem duckdb_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 einer DUCKDB_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 einem duckdb_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 einer DUCKDB_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 einer DUCKDB_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 einer DUCKDB_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 einer DUCKDB_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 Typ
  • alias: 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-Typs
  • scale: 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 Typobjekt
  • index: 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 Typobjekt
  • index: 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 Typobjekt
  • index: 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 Typobjekt
  • index: 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 Typobjekt
  • index: 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 Verbindung
  • type: Der zu registrierende benutzerdefinierte Typ
Rückgabewert

Ob die Registrierung erfolgreich war.