From 09d16ef99cf3100035312862129765d67fbbcda8 Mon Sep 17 00:00:00 2001 From: Vamshi Maskuri <117595548+varshith257@users.noreply.github.com> Date: Sat, 19 Oct 2024 09:48:46 +0530 Subject: [PATCH] fix clippy issues --- extension/src/api.rs | 4 ++-- extension/src/init.rs | 5 +---- extension/src/search.rs | 9 +++++---- extension/src/util.rs | 9 +++++++++ 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/extension/src/api.rs b/extension/src/api.rs index f4cb425..7a35754 100644 --- a/extension/src/api.rs +++ b/extension/src/api.rs @@ -5,9 +5,9 @@ use crate::search::{self, init_table}; use crate::transformers::generic::env_interpolate_string; use crate::transformers::transform; use crate::types; +use crate::util::pg_oid_to_table_name; use anyhow::Result; -use pgrx::pg_sys::PgOid; use pgrx::prelude::*; use vectorize_core::types::Model; @@ -28,7 +28,7 @@ fn table( schedule: default!(&str, "'* * * * *'"), ) -> Result { let model = Model::new(transformer)?; - let table_name_str = table_name.to_regclass()?.to_string(); + let table_name_str = pg_oid_to_table_name(table_name); init_table( job_name, &table_name_str, diff --git a/extension/src/init.rs b/extension/src/init.rs index ac92a50..78a8ee2 100644 --- a/extension/src/init.rs +++ b/extension/src/init.rs @@ -239,7 +239,7 @@ fn append_embedding_column(job_name: &str, schema: &str, table: &str, col_type: ) } -pub fn get_column_datatype(schema: &str, table: &str, column: &str) -> Result { +pub fn get_column_datatype(table: &str, column: &str) -> Result { Spi::get_one_with_args( " SELECT data_type @@ -250,7 +250,6 @@ pub fn get_column_datatype(schema: &str, table: &str, column: &str) -> Result Result Result, primary_key: &str, update_col: Option, @@ -28,6 +27,8 @@ pub fn init_table( // cron-like for a cron based update model, or 'realtime' for a trigger-based schedule: &str, ) -> Result { + let table_name_str = pg_oid_to_table_name(table_name); + // validate table method // realtime is only compatible with the join method if schedule == "realtime" && table_method != TableMethod::join { @@ -35,7 +36,7 @@ pub fn init_table( } // get prim key type - let pkey_type = init::get_column_datatype(schema, table, primary_key)?; + let pkey_type = init::get_column_datatype(&table_name_str, primary_key)?; init::init_pgmq()?; let guc_configs = get_guc_configs(&transformer.source); diff --git a/extension/src/util.rs b/extension/src/util.rs index 2b5f3c2..49610b1 100644 --- a/extension/src/util.rs +++ b/extension/src/util.rs @@ -1,9 +1,11 @@ use anyhow::Result; +use pgrx::pg_sys::{regclassout, Oid}; use pgrx::spi::SpiTupleTable; use pgrx::*; use sqlx::postgres::{PgConnectOptions, PgPoolOptions}; use sqlx::{Pool, Postgres}; use std::env; +use std::ffi::CStr; use url::{ParseError, Url}; use crate::guc; @@ -204,6 +206,13 @@ pub fn get_pg_options(cfg: Config) -> Result { } } +pub fn pg_oid_to_table_name(oid: PgOid) -> String { + unsafe { + let regclass_cstring = regclassout(oid.value() as Oid); + CStr::from_ptr(regclass_cstring).to_string_lossy().into_owned() + } +} + pub async fn ready(conn: &Pool) -> bool { sqlx::query_scalar( "SELECT EXISTS (