From 7513f859df6dca5957e7acc8dac009a42ce70e53 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Thu, 6 Feb 2025 13:50:05 +0200 Subject: [PATCH 1/3] core: Move printf to functions module --- core/functions/mod.rs | 1 + core/{vdbe => functions}/printf.rs | 0 core/lib.rs | 1 + core/vdbe/mod.rs | 3 +-- 4 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 core/functions/mod.rs rename core/{vdbe => functions}/printf.rs (100%) diff --git a/core/functions/mod.rs b/core/functions/mod.rs new file mode 100644 index 000000000..1874bec84 --- /dev/null +++ b/core/functions/mod.rs @@ -0,0 +1 @@ +pub mod printf; diff --git a/core/vdbe/printf.rs b/core/functions/printf.rs similarity index 100% rename from core/vdbe/printf.rs rename to core/functions/printf.rs diff --git a/core/lib.rs b/core/lib.rs index 618a5a678..884aad963 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -1,6 +1,7 @@ mod error; mod ext; mod function; +mod functions; mod info; mod io; #[cfg(feature = "json")] diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 2cb592828..8c84c98c3 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -22,13 +22,13 @@ mod datetime; pub mod explain; pub mod insn; pub mod likeop; -mod printf; pub mod sorter; mod strftime; use crate::error::{LimboError, SQLITE_CONSTRAINT_PRIMARYKEY}; use crate::ext::ExtValue; use crate::function::{AggFunc, ExtFunc, FuncCtx, MathFunc, MathFuncArity, ScalarFunc, VectorFunc}; +use crate::functions::printf::exec_printf; use crate::info; use crate::pseudo::PseudoCursor; use crate::result::LimboResult; @@ -60,7 +60,6 @@ use insn::{ exec_subtract, }; use likeop::{construct_like_escape_arg, exec_glob, exec_like_with_escape}; -use printf::exec_printf; use rand::distributions::{Distribution, Uniform}; use rand::{thread_rng, Rng}; use regex::{Regex, RegexBuilder}; From ee8eabf16739c29715970812449ff96357418abd Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Thu, 6 Feb 2025 13:52:25 +0200 Subject: [PATCH 2/3] core: Move datetime to functions module --- core/{vdbe => functions}/datetime.rs | 2 +- core/functions/mod.rs | 1 + core/vdbe/mod.rs | 9 ++++----- 3 files changed, 6 insertions(+), 6 deletions(-) rename core/{vdbe => functions}/datetime.rs (99%) diff --git a/core/vdbe/datetime.rs b/core/functions/datetime.rs similarity index 99% rename from core/vdbe/datetime.rs rename to core/functions/datetime.rs index 878e722e6..ce84816b1 100644 --- a/core/vdbe/datetime.rs +++ b/core/functions/datetime.rs @@ -122,7 +122,7 @@ fn format_dt(dt: NaiveDateTime, output_type: DateTimeOutput, subsec: bool) -> St // Not as fast as if the formatting was native to chrono, but a good enough // for now, just to have the feature implemented fn strftime_format(dt: &NaiveDateTime, format_str: &str) -> String { - use super::strftime::CustomStrftimeItems; + use crate::vdbe::strftime::CustomStrftimeItems; use std::fmt::Write; // Necessary to remove %f and %J that are exclusive formatters to sqlite // Chrono does not support them, so it is necessary to replace the modifiers manually diff --git a/core/functions/mod.rs b/core/functions/mod.rs index 1874bec84..d2a84e41e 100644 --- a/core/functions/mod.rs +++ b/core/functions/mod.rs @@ -1 +1,2 @@ +pub mod datetime; pub mod printf; diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index 8c84c98c3..e22acb77f 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -18,16 +18,18 @@ //! https://www.sqlite.org/opcode.html pub mod builder; -mod datetime; pub mod explain; pub mod insn; pub mod likeop; pub mod sorter; -mod strftime; +pub mod strftime; use crate::error::{LimboError, SQLITE_CONSTRAINT_PRIMARYKEY}; use crate::ext::ExtValue; use crate::function::{AggFunc, ExtFunc, FuncCtx, MathFunc, MathFuncArity, ScalarFunc, VectorFunc}; +use crate::functions::datetime::{ + exec_date, exec_datetime_full, exec_julianday, exec_strftime, exec_time, exec_unixepoch, +}; use crate::functions::printf::exec_printf; use crate::info; use crate::pseudo::PseudoCursor; @@ -51,9 +53,6 @@ use crate::{ json::json_remove, json::json_set, json::json_type, }; use crate::{resolve_ext_path, Connection, Result, TransactionState, DATABASE_VERSION}; -use datetime::{ - exec_date, exec_datetime_full, exec_julianday, exec_strftime, exec_time, exec_unixepoch, -}; use insn::{ exec_add, exec_and, exec_bit_and, exec_bit_not, exec_bit_or, exec_boolean_not, exec_concat, exec_divide, exec_multiply, exec_or, exec_remainder, exec_shift_left, exec_shift_right, From f4a574e6bc92936c9a9b8f859895fe06e4c202e1 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Thu, 6 Feb 2025 13:53:36 +0200 Subject: [PATCH 3/3] core: Move strftime to functions module --- core/functions/datetime.rs | 2 +- core/functions/mod.rs | 1 + core/{vdbe => functions}/strftime.rs | 0 core/vdbe/mod.rs | 1 - 4 files changed, 2 insertions(+), 2 deletions(-) rename core/{vdbe => functions}/strftime.rs (100%) diff --git a/core/functions/datetime.rs b/core/functions/datetime.rs index ce84816b1..8c5c0aaff 100644 --- a/core/functions/datetime.rs +++ b/core/functions/datetime.rs @@ -122,7 +122,7 @@ fn format_dt(dt: NaiveDateTime, output_type: DateTimeOutput, subsec: bool) -> St // Not as fast as if the formatting was native to chrono, but a good enough // for now, just to have the feature implemented fn strftime_format(dt: &NaiveDateTime, format_str: &str) -> String { - use crate::vdbe::strftime::CustomStrftimeItems; + use crate::functions::strftime::CustomStrftimeItems; use std::fmt::Write; // Necessary to remove %f and %J that are exclusive formatters to sqlite // Chrono does not support them, so it is necessary to replace the modifiers manually diff --git a/core/functions/mod.rs b/core/functions/mod.rs index d2a84e41e..cf97f318a 100644 --- a/core/functions/mod.rs +++ b/core/functions/mod.rs @@ -1,2 +1,3 @@ pub mod datetime; pub mod printf; +pub mod strftime; diff --git a/core/vdbe/strftime.rs b/core/functions/strftime.rs similarity index 100% rename from core/vdbe/strftime.rs rename to core/functions/strftime.rs diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index e22acb77f..e77ccf551 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -22,7 +22,6 @@ pub mod explain; pub mod insn; pub mod likeop; pub mod sorter; -pub mod strftime; use crate::error::{LimboError, SQLITE_CONSTRAINT_PRIMARYKEY}; use crate::ext::ExtValue;