@@ -22,6 +22,7 @@ static VALUE duckdb_logical_type__internal_type(VALUE self);
2222static VALUE duckdb_logical_type_dictionary_size (VALUE self );
2323static VALUE duckdb_logical_type_dictionary_value_at (VALUE self , VALUE didx );
2424static VALUE duckdb_logical_type__get_alias (VALUE self );
25+ static VALUE duckdb_logical_type__set_alias (VALUE self , VALUE aname );
2526
2627static const rb_data_type_t logical_type_data_type = {
2728 "DuckDB/LogicalType" ,
@@ -380,6 +381,27 @@ static VALUE duckdb_logical_type__get_alias(VALUE self) {
380381 return alias ;
381382}
382383
384+ /*
385+ * call-seq:
386+ * col.logical_type.alias(alias) -> String
387+ *
388+ * Return the set alias of the logical type.
389+ *
390+ */
391+ static VALUE duckdb_logical_type__set_alias (VALUE self , VALUE aname ) {
392+ rubyDuckDBLogicalType * ctx ;
393+ VALUE alias = Qnil ;
394+ const char * _alias = StringValuePtr (aname );
395+
396+ TypedData_Get_Struct (self , rubyDuckDBLogicalType , & logical_type_data_type , ctx );
397+ duckdb_logical_type_set_alias (ctx -> logical_type , _alias );
398+ if (_alias != NULL ) {
399+ alias = rb_utf8_str_new_cstr (_alias );
400+ }
401+
402+ return alias ;
403+ }
404+
383405VALUE rbduckdb_create_logical_type (duckdb_logical_type logical_type ) {
384406 VALUE obj ;
385407 rubyDuckDBLogicalType * ctx ;
@@ -415,6 +437,6 @@ void rbduckdb_init_duckdb_logical_type(void) {
415437 rb_define_method (cDuckDBLogicalType , "_internal_type" , duckdb_logical_type__internal_type , 0 );
416438 rb_define_method (cDuckDBLogicalType , "dictionary_size" , duckdb_logical_type_dictionary_size , 0 );
417439 rb_define_method (cDuckDBLogicalType , "dictionary_value_at" , duckdb_logical_type_dictionary_value_at , 1 );
418- rb_define_method (cDuckDBLogicalType , "alias" , duckdb_logical_type_alias , 0 );
419440 rb_define_method (cDuckDBLogicalType , "get_alias" , duckdb_logical_type__get_alias , 0 );
441+ rb_define_method (cDuckDBLogicalType , "set_alias" , duckdb_logical_type__set_alias , 1 );
420442}
0 commit comments