From 24befa0ba631ae82e642f1306a2c43fbb7e32a41 Mon Sep 17 00:00:00 2001 From: JalonSolov Date: Fri, 3 Nov 2023 14:43:44 -0400 Subject: [PATCH] pg: hande C calls, move to .c.v files (#19739) --- vlib/db/mssql/{mssql.v => mssql.c.v} | 0 .../db/mssql/{stmt_handle.v => stmt_handle.c.v} | 0 vlib/db/mysql/{consts.v => consts.c.v} | 0 vlib/db/mysql/{mysql.v => mysql.c.v} | 0 vlib/db/mysql/{orm.v => orm.c.v} | 0 vlib/db/mysql/{result.v => result.c.v} | 0 vlib/db/mysql/{utils.v => utils.c.v} | 0 vlib/db/pg/orm.v | 16 ---------------- vlib/db/pg/{pg.v => pg.c.v} | 17 +++++++++++++++++ vlib/db/sqlite/{sqlite.v => sqlite.c.v} | 0 vlib/db/sqlite/sqlite_vfs_lowlevel_test.v | 2 +- vlib/db/sqlite/{stmt.v => stmt.c.v} | 0 .../sqlite/{vfs_lowlevel.v => vfs_lowlevel.c.v} | 0 13 files changed, 18 insertions(+), 17 deletions(-) rename vlib/db/mssql/{mssql.v => mssql.c.v} (100%) rename vlib/db/mssql/{stmt_handle.v => stmt_handle.c.v} (100%) rename vlib/db/mysql/{consts.v => consts.c.v} (100%) rename vlib/db/mysql/{mysql.v => mysql.c.v} (100%) rename vlib/db/mysql/{orm.v => orm.c.v} (100%) rename vlib/db/mysql/{result.v => result.c.v} (100%) rename vlib/db/mysql/{utils.v => utils.c.v} (100%) rename vlib/db/pg/{pg.v => pg.c.v} (94%) rename vlib/db/sqlite/{sqlite.v => sqlite.c.v} (100%) rename vlib/db/sqlite/{stmt.v => stmt.c.v} (100%) rename vlib/db/sqlite/{vfs_lowlevel.v => vfs_lowlevel.c.v} (100%) diff --git a/vlib/db/mssql/mssql.v b/vlib/db/mssql/mssql.c.v similarity index 100% rename from vlib/db/mssql/mssql.v rename to vlib/db/mssql/mssql.c.v diff --git a/vlib/db/mssql/stmt_handle.v b/vlib/db/mssql/stmt_handle.c.v similarity index 100% rename from vlib/db/mssql/stmt_handle.v rename to vlib/db/mssql/stmt_handle.c.v diff --git a/vlib/db/mysql/consts.v b/vlib/db/mysql/consts.c.v similarity index 100% rename from vlib/db/mysql/consts.v rename to vlib/db/mysql/consts.c.v diff --git a/vlib/db/mysql/mysql.v b/vlib/db/mysql/mysql.c.v similarity index 100% rename from vlib/db/mysql/mysql.v rename to vlib/db/mysql/mysql.c.v diff --git a/vlib/db/mysql/orm.v b/vlib/db/mysql/orm.c.v similarity index 100% rename from vlib/db/mysql/orm.v rename to vlib/db/mysql/orm.c.v diff --git a/vlib/db/mysql/result.v b/vlib/db/mysql/result.c.v similarity index 100% rename from vlib/db/mysql/result.v rename to vlib/db/mysql/result.c.v diff --git a/vlib/db/mysql/utils.v b/vlib/db/mysql/utils.c.v similarity index 100% rename from vlib/db/mysql/utils.v rename to vlib/db/mysql/utils.c.v diff --git a/vlib/db/pg/orm.v b/vlib/db/pg/orm.v index a679309803..f28758067d 100644 --- a/vlib/db/pg/orm.v +++ b/vlib/db/pg/orm.v @@ -73,22 +73,6 @@ pub fn (db DB) drop(table string) ! { // utils -fn pg_stmt_worker(db DB, query string, data orm.QueryData, where orm.QueryData) ![]Row { - mut param_types := []u32{} - mut param_vals := []&char{} - mut param_lens := []int{} - mut param_formats := []int{} - - pg_stmt_binder(mut param_types, mut param_vals, mut param_lens, mut param_formats, - data) - pg_stmt_binder(mut param_types, mut param_vals, mut param_lens, mut param_formats, - where) - - res := C.PQexecParams(db.conn, &char(query.str), param_vals.len, param_types.data, - param_vals.data, param_lens.data, param_formats.data, 0) // here, the last 0 means require text results, 1 - binary results - return db.handle_error_or_result(res, 'orm_stmt_worker') -} - fn pg_stmt_binder(mut types []u32, mut vals []&char, mut lens []int, mut formats []int, d orm.QueryData) { for data in d.data { pg_stmt_match(mut types, mut vals, mut lens, mut formats, data) diff --git a/vlib/db/pg/pg.v b/vlib/db/pg/pg.c.v similarity index 94% rename from vlib/db/pg/pg.v rename to vlib/db/pg/pg.c.v index ec3cb2c2e5..b8bacb6780 100644 --- a/vlib/db/pg/pg.v +++ b/vlib/db/pg/pg.c.v @@ -1,6 +1,7 @@ module pg import io +import orm $if $pkgconfig('libpq') { #pkgconfig --cflags --libs libpq @@ -363,3 +364,19 @@ pub fn (db DB) copy_expert(query string, mut file io.ReaderWriter) !int { return 0 } + +fn pg_stmt_worker(db DB, query string, data orm.QueryData, where orm.QueryData) ![]Row { + mut param_types := []u32{} + mut param_vals := []&char{} + mut param_lens := []int{} + mut param_formats := []int{} + + pg_stmt_binder(mut param_types, mut param_vals, mut param_lens, mut param_formats, + data) + pg_stmt_binder(mut param_types, mut param_vals, mut param_lens, mut param_formats, + where) + + res := C.PQexecParams(db.conn, &char(query.str), param_vals.len, param_types.data, + param_vals.data, param_lens.data, param_formats.data, 0) // here, the last 0 means require text results, 1 - binary results + return db.handle_error_or_result(res, 'orm_stmt_worker') +} diff --git a/vlib/db/sqlite/sqlite.v b/vlib/db/sqlite/sqlite.c.v similarity index 100% rename from vlib/db/sqlite/sqlite.v rename to vlib/db/sqlite/sqlite.c.v diff --git a/vlib/db/sqlite/sqlite_vfs_lowlevel_test.v b/vlib/db/sqlite/sqlite_vfs_lowlevel_test.v index 1dc0a51322..50668e9ee8 100644 --- a/vlib/db/sqlite/sqlite_vfs_lowlevel_test.v +++ b/vlib/db/sqlite/sqlite_vfs_lowlevel_test.v @@ -214,7 +214,7 @@ fn example_vfsfile_read(file &sqlite.Sqlite3_file, output voidptr, amount int, o vfsfile.vfs_state.log << 'read file=${vfsfile.name}' unsafe { - C.memset(output, 0, amount) + vmemset(output, 0, amount) } return sqlite.sqlite_ioerr_short_read diff --git a/vlib/db/sqlite/stmt.v b/vlib/db/sqlite/stmt.c.v similarity index 100% rename from vlib/db/sqlite/stmt.v rename to vlib/db/sqlite/stmt.c.v diff --git a/vlib/db/sqlite/vfs_lowlevel.v b/vlib/db/sqlite/vfs_lowlevel.c.v similarity index 100% rename from vlib/db/sqlite/vfs_lowlevel.v rename to vlib/db/sqlite/vfs_lowlevel.c.v