Skip to content

Commit c66f295

Browse files
committed
Add Enum appender test
1 parent c59300f commit c66f295

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

DuckDB.NET.Test/DuckDBManagedAppenderTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,43 @@ public void ClearAppenderAddMoreData()
763763
count.Should().Be(5000);
764764
}
765765

766+
[Fact]
767+
public void AppenderWithEnum()
768+
{
769+
Command.CommandText = "CREATE TYPE mood AS ENUM ('happy', 'sad', 'neutral');";
770+
Command.ExecuteNonQuery();
771+
772+
Command.CommandText = "CREATE TABLE managedAppenderEnumChunkBoundary (id INTEGER, feeling mood);";
773+
Command.ExecuteNonQuery();
774+
775+
var moods = new[] { "happy", "sad", "neutral" };
776+
777+
// Append more than 2048 rows (VectorSize) to trigger writer recreation across the chunk boundary
778+
const int rows = 2049;
779+
using (var appender = Connection.CreateAppender("managedAppenderEnumChunkBoundary"))
780+
{
781+
for (int i = 0; i < rows; i++)
782+
{
783+
appender.CreateRow()
784+
.AppendValue(i)
785+
.AppendValue(moods[i % moods.Length])
786+
.EndRow();
787+
}
788+
}
789+
790+
Command.CommandText = "SELECT id, feeling::VARCHAR FROM managedAppenderEnumChunkBoundary ORDER BY id";
791+
using var reader = Command.ExecuteReader();
792+
793+
for (int i = 0; i < rows; i++)
794+
{
795+
reader.Read().Should().BeTrue();
796+
reader.GetInt32(0).Should().Be(i);
797+
reader.GetString(1).Should().Be(moods[i % moods.Length]);
798+
}
799+
800+
reader.Read().Should().BeFalse();
801+
}
802+
766803
private static string GetCreateEnumTypeSql(string enumName, string enumValueNamePrefix, int count)
767804
{
768805
var stringBuilder = new StringBuilder();

0 commit comments

Comments
 (0)