@@ -21,6 +21,8 @@ static VALUE duckdb_logical_type_member_type_at(VALUE self, VALUE midx);
2121static 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 );
24+ static VALUE duckdb_logical_type__get_alias (VALUE self );
25+ static VALUE duckdb_logical_type__set_alias (VALUE self , VALUE aname );
2426
2527static const rb_data_type_t logical_type_data_type = {
2628 "DuckDB/LogicalType" ,
@@ -357,6 +359,49 @@ static VALUE duckdb_logical_type_dictionary_value_at(VALUE self, VALUE didx) {
357359 return dvalue ;
358360}
359361
362+ /*
363+ * call-seq:
364+ * col.logical_type.alias -> String
365+ *
366+ * Returns the alias of the logical type.
367+ *
368+ */
369+ static VALUE duckdb_logical_type__get_alias (VALUE self ) {
370+ rubyDuckDBLogicalType * ctx ;
371+ VALUE alias = Qnil ;
372+ const char * _alias ;
373+
374+ TypedData_Get_Struct (self , rubyDuckDBLogicalType , & logical_type_data_type , ctx );
375+
376+ _alias = duckdb_logical_type_get_alias (ctx -> logical_type );
377+ if (_alias != NULL ) {
378+ alias = rb_utf8_str_new_cstr (_alias );
379+ }
380+ duckdb_free ((void * )_alias );
381+ return alias ;
382+ }
383+
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+
360405VALUE rbduckdb_create_logical_type (duckdb_logical_type logical_type ) {
361406 VALUE obj ;
362407 rubyDuckDBLogicalType * ctx ;
@@ -392,4 +437,6 @@ void rbduckdb_init_duckdb_logical_type(void) {
392437 rb_define_method (cDuckDBLogicalType , "_internal_type" , duckdb_logical_type__internal_type , 0 );
393438 rb_define_method (cDuckDBLogicalType , "dictionary_size" , duckdb_logical_type_dictionary_size , 0 );
394439 rb_define_method (cDuckDBLogicalType , "dictionary_value_at" , duckdb_logical_type_dictionary_value_at , 1 );
440+ 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 );
395442}
0 commit comments