From 9f910643edab33ca377c4ec34a12988b5d5f02a7 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Sun, 17 Aug 2025 17:46:10 -0300 Subject: [PATCH] orm: fix sub_structs (fix #25104) (#25105) --- vlib/v/gen/c/orm.v | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/vlib/v/gen/c/orm.v b/vlib/v/gen/c/orm.v index cbe2a450ac..d36f134e7e 100644 --- a/vlib/v/gen/c/orm.v +++ b/vlib/v/gen/c/orm.v @@ -360,12 +360,15 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v final_field_typ := g.table.final_type(field.typ) sym := g.table.sym(final_field_typ) if sym.kind == .struct && sym.name != 'time.Time' { - subs << unsafe { node.sub_structs[int(final_field_typ)] } - unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option)) - subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) { - unwrapped_c_typ - } else { - '' + if final_field_typ in node.sub_structs { + subs << unsafe { node.sub_structs[int(final_field_typ)] } + + unwrapped_c_typ := g.styp(final_field_typ.clear_flag(.option)) + subs_unwrapped_c_typ << if final_field_typ.has_flag(.option) { + unwrapped_c_typ + } else { + '' + } } } else if sym.kind == .array { // Handle foreign keys @@ -377,7 +380,7 @@ fn (mut g Gen) write_orm_insert_with_last_ids(node ast.SqlStmtLine, connection_v if final_field_typ.has_flag(.option) { opt_fields << arrs.len } - if node.sub_structs.len > 0 { + if final_field_typ in node.sub_structs { arrs << unsafe { node.sub_structs[int(final_field_typ)] } } field_names << field.name