File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 ( ) ;
You can’t perform that action at this time.
0 commit comments