Skip to content

Conversation

@staticlibs
Copy link
Collaborator

@staticlibs staticlibs commented Nov 6, 2025

This change allows to insert records into ENUM columns using Appender interface.

ENUM values are specified as Strings, usage example:

stmt.execute("CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');");
stmt.execute("CREATE TABLE tab1(col1 mood)");

try (DuckDBAppender appender = conn.createAppender("tab1")) {
    appender.beginRow().append("sad").endRow();
    appender.beginRow().append("happy").endRow();
}

Additionally append(byte[]) method now can be used to insert VARCHAR records; and BLOB columns can be used inside LISTs or MAPs.

Testing: new tests added for top-level and nested (inside LISTs) ENUMs usage.

Fix: #416

This change allows to insert records into `ENUM` columns using
`Appender` interface.

`ENUM` values are specified as `Strings`, usage example:

```java
stmt.execute("CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');");
stmt.execute("CREATE TABLE tab1(col1 mood)");
try (DuckDBAppender appender = conn.createAppender("tab1")) {
    appender.beginRow().append("sad").endRow();
    appender.beginRow().append("happy").endRow();
}
```

Additionally `append(byte[])` method now can be used to insert `VARCHAR`
records and `BLOB` columns can be used inside `LIST`s or `MAP`s.

Testing: new tests added for top-level and nested (inside `LIST`s)
`ENUM`s usage.

Fix: duckdb#416
@staticlibs staticlibs merged commit b358475 into duckdb:main Nov 7, 2025
10 checks passed
@staticlibs staticlibs deleted the appender_enum branch November 7, 2025 14:26
staticlibs added a commit to staticlibs/duckdb-java that referenced this pull request Nov 10, 2025
This is a backport of the PR duckdb#445 to `v1.4-andium` stable branch.

This change allows to insert records into `ENUM` columns using
`Appender` interface.

`ENUM` values are specified as `Strings`, usage example:

```java
stmt.execute("CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');");
stmt.execute("CREATE TABLE tab1(col1 mood)");
try (DuckDBAppender appender = conn.createAppender("tab1")) {
    appender.beginRow().append("sad").endRow();
    appender.beginRow().append("happy").endRow();
}
```

Additionally `append(byte[])` method now can be used to insert `VARCHAR`
records and `BLOB` columns can be used inside `LIST`s or `MAP`s.

Testing: new tests added for top-level and nested (inside `LIST`s)
`ENUM`s usage.

Fix: duckdb#416
staticlibs added a commit that referenced this pull request Nov 10, 2025
This is a backport of the PR #445 to `v1.4-andium` stable branch.

This change allows to insert records into `ENUM` columns using
`Appender` interface.

`ENUM` values are specified as `Strings`, usage example:

```java
stmt.execute("CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');");
stmt.execute("CREATE TABLE tab1(col1 mood)");
try (DuckDBAppender appender = conn.createAppender("tab1")) {
    appender.beginRow().append("sad").endRow();
    appender.beginRow().append("happy").endRow();
}
```

Additionally `append(byte[])` method now can be used to insert `VARCHAR`
records and `BLOB` columns can be used inside `LIST`s or `MAP`s.

Testing: new tests added for top-level and nested (inside `LIST`s)
`ENUM`s usage.

Fix: #416
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Appender] Add support for ENUM

1 participant