From ac2e7d7f29ac7c5a914f9a51eb91b3bd28948d89 Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Sun, 26 Oct 2025 08:26:24 +0200 Subject: [PATCH] db.sqlite: fix orm f32 field retrieval for sqlite (fix #25583) (#25592) --- cmd/tools/vtest-self.v | 2 ++ vlib/db/sqlite/orm.v | 4 +++- vlib/db/sqlite/sqlite_f32_test.v | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 vlib/db/sqlite/sqlite_f32_test.v diff --git a/cmd/tools/vtest-self.v b/cmd/tools/vtest-self.v index dc2bd7e8d..c2474f55c 100644 --- a/cmd/tools/vtest-self.v +++ b/cmd/tools/vtest-self.v @@ -162,6 +162,7 @@ const skip_with_fsanitize_memory = [ 'vlib/db/sqlite/sqlite_comptime_field_test.v', 'vlib/db/sqlite/parent_child_test.v', 'vlib/db/sqlite/sqlite_vfs_lowlevel_test.v', + 'vlib/db/sqlite/sqlite_f32_test.v', 'vlib/v/tests/orm_enum_test.v', 'vlib/v/tests/orm_sub_struct_test.v', 'vlib/v/tests/orm_sub_array_struct_test.v', @@ -225,6 +226,7 @@ const skip_on_ubuntu_musl = [ 'vlib/db/sqlite/sqlite_comptime_field_test.v', 'vlib/db/sqlite/sqlite_vfs_lowlevel_test.v', 'vlib/db/sqlite/parent_child_test.v', + 'vlib/db/sqlite/sqlite_f32_test.v', 'vlib/orm/orm_test.v', 'vlib/orm/orm_sql_or_blocks_test.v', 'vlib/orm/orm_create_and_drop_test.v', diff --git a/vlib/db/sqlite/orm.v b/vlib/db/sqlite/orm.v index 69e061e7e..5a7b3e4b0 100644 --- a/vlib/db/sqlite/orm.v +++ b/vlib/db/sqlite/orm.v @@ -167,7 +167,9 @@ fn (stmt Stmt) sqlite_select_column(idx int, typ int) !orm.Primitive { return stmt.get_int(idx) or { return orm.Null{} } } else if typ in orm.num64 { return stmt.get_i64(idx) or { return orm.Null{} } - } else if typ in orm.float { + } else if typ == typeof[f32]().idx { + return f32(stmt.get_f64(idx) or { return orm.Null{} }) + } else if typ == typeof[f64]().idx { return stmt.get_f64(idx) or { return orm.Null{} } } else if typ == orm.type_string { if v := stmt.get_text(idx) { diff --git a/vlib/db/sqlite/sqlite_f32_test.v b/vlib/db/sqlite/sqlite_f32_test.v new file mode 100644 index 000000000..64df73b25 --- /dev/null +++ b/vlib/db/sqlite/sqlite_f32_test.v @@ -0,0 +1,25 @@ +// vtest build: present_sqlite3? && !sanitize-memory-clang +import db.sqlite + +struct Test { + value f32 + value2 f64 +} + +fn test_main() { + conn := sqlite.connect(':memory:')! + + data := Test{32.32, 64.64} + + sql conn { + create table Test + insert data into Test + }! + + s := sql conn { + select from Test + }! + + assert s[0].value == 32.32 + assert s[0].value2 == 64.64 +} -- 2.39.5