From 6a239ce8090174aaf14bdc37291674b8fed11077 Mon Sep 17 00:00:00 2001 From: Weijun-H Date: Wed, 9 Oct 2024 23:15:50 +0800 Subject: [PATCH] refactor: Refactor workspace and add pg_analytics module --- Cargo.toml | 58 ++---------------- pg_analytics/Cargo.toml | 59 +++++++++++++++++++ .../pg_analytics.control | 0 .../sql}/pg_analytics--0.1.0--0.1.1.sql | 0 .../sql}/pg_analytics--0.1.1--0.1.2.sql | 0 .../sql}/pg_analytics--0.1.2--0.1.3.sql | 0 .../sql}/pg_analytics--0.1.3--0.1.4.sql | 0 .../sql}/pg_analytics--0.1.4--0.2.0.sql | 0 {src => pg_analytics/src}/api/csv.rs | 0 {src => pg_analytics/src}/api/duckdb.rs | 0 {src => pg_analytics/src}/api/mod.rs | 0 {src => pg_analytics/src}/api/parquet.rs | 0 {src => pg_analytics/src}/api/time_bucket.rs | 0 {src => pg_analytics/src}/bin/pgrx_embed.rs | 0 {src => pg_analytics/src}/debug_guc.rs | 0 .../src}/duckdb/connection.rs | 0 {src => pg_analytics/src}/duckdb/csv.rs | 0 {src => pg_analytics/src}/duckdb/delta.rs | 0 {src => pg_analytics/src}/duckdb/iceberg.rs | 0 {src => pg_analytics/src}/duckdb/json.rs | 0 {src => pg_analytics/src}/duckdb/mod.rs | 0 {src => pg_analytics/src}/duckdb/parquet.rs | 0 {src => pg_analytics/src}/duckdb/secret.rs | 0 {src => pg_analytics/src}/duckdb/spatial.rs | 0 {src => pg_analytics/src}/duckdb/utils.rs | 0 {src => pg_analytics/src}/fdw/base.rs | 0 {src => pg_analytics/src}/fdw/csv.rs | 0 {src => pg_analytics/src}/fdw/delta.rs | 0 {src => pg_analytics/src}/fdw/handler.rs | 0 {src => pg_analytics/src}/fdw/iceberg.rs | 0 {src => pg_analytics/src}/fdw/json.rs | 0 {src => pg_analytics/src}/fdw/mod.rs | 0 {src => pg_analytics/src}/fdw/parquet.rs | 0 {src => pg_analytics/src}/fdw/spatial.rs | 0 {src => pg_analytics/src}/fdw/trigger.rs | 0 {src => pg_analytics/src}/hooks/executor.rs | 0 {src => pg_analytics/src}/hooks/mod.rs | 0 {src => pg_analytics/src}/hooks/query.rs | 0 {src => pg_analytics/src}/hooks/utility.rs | 0 {src => pg_analytics/src}/lib.rs | 0 {src => pg_analytics/src}/schema/cell.rs | 0 {src => pg_analytics/src}/schema/datetime.rs | 0 {src => pg_analytics/src}/schema/mod.rs | 0 {tests => pg_analytics/tests}/datetime.rs | 0 {tests => pg_analytics/tests}/explain.rs | 0 .../tests}/fixtures/arrow.rs | 0 {tests => pg_analytics/tests}/fixtures/db.rs | 0 {tests => pg_analytics/tests}/fixtures/mod.rs | 0 .../tests}/fixtures/tables/duckdb_types.rs | 0 .../tests}/fixtures/tables/mod.rs | 0 .../tests}/fixtures/tables/nyc_trips.rs | 0 {tests => pg_analytics/tests}/json.rs | 0 {tests => pg_analytics/tests}/scan.rs | 0 {tests => pg_analytics/tests}/settings.rs | 0 {tests => pg_analytics/tests}/spatial.rs | 0 {tests => pg_analytics/tests}/table_config.rs | 0 56 files changed, 63 insertions(+), 54 deletions(-) create mode 100644 pg_analytics/Cargo.toml rename pg_analytics.control => pg_analytics/pg_analytics.control (100%) rename {sql => pg_analytics/sql}/pg_analytics--0.1.0--0.1.1.sql (100%) rename {sql => pg_analytics/sql}/pg_analytics--0.1.1--0.1.2.sql (100%) rename {sql => pg_analytics/sql}/pg_analytics--0.1.2--0.1.3.sql (100%) rename {sql => pg_analytics/sql}/pg_analytics--0.1.3--0.1.4.sql (100%) rename {sql => pg_analytics/sql}/pg_analytics--0.1.4--0.2.0.sql (100%) rename {src => pg_analytics/src}/api/csv.rs (100%) rename {src => pg_analytics/src}/api/duckdb.rs (100%) rename {src => pg_analytics/src}/api/mod.rs (100%) rename {src => pg_analytics/src}/api/parquet.rs (100%) rename {src => pg_analytics/src}/api/time_bucket.rs (100%) rename {src => pg_analytics/src}/bin/pgrx_embed.rs (100%) rename {src => pg_analytics/src}/debug_guc.rs (100%) rename {src => pg_analytics/src}/duckdb/connection.rs (100%) rename {src => pg_analytics/src}/duckdb/csv.rs (100%) rename {src => pg_analytics/src}/duckdb/delta.rs (100%) rename {src => pg_analytics/src}/duckdb/iceberg.rs (100%) rename {src => pg_analytics/src}/duckdb/json.rs (100%) rename {src => pg_analytics/src}/duckdb/mod.rs (100%) rename {src => pg_analytics/src}/duckdb/parquet.rs (100%) rename {src => pg_analytics/src}/duckdb/secret.rs (100%) rename {src => pg_analytics/src}/duckdb/spatial.rs (100%) rename {src => pg_analytics/src}/duckdb/utils.rs (100%) rename {src => pg_analytics/src}/fdw/base.rs (100%) rename {src => pg_analytics/src}/fdw/csv.rs (100%) rename {src => pg_analytics/src}/fdw/delta.rs (100%) rename {src => pg_analytics/src}/fdw/handler.rs (100%) rename {src => pg_analytics/src}/fdw/iceberg.rs (100%) rename {src => pg_analytics/src}/fdw/json.rs (100%) rename {src => pg_analytics/src}/fdw/mod.rs (100%) rename {src => pg_analytics/src}/fdw/parquet.rs (100%) rename {src => pg_analytics/src}/fdw/spatial.rs (100%) rename {src => pg_analytics/src}/fdw/trigger.rs (100%) rename {src => pg_analytics/src}/hooks/executor.rs (100%) rename {src => pg_analytics/src}/hooks/mod.rs (100%) rename {src => pg_analytics/src}/hooks/query.rs (100%) rename {src => pg_analytics/src}/hooks/utility.rs (100%) rename {src => pg_analytics/src}/lib.rs (100%) rename {src => pg_analytics/src}/schema/cell.rs (100%) rename {src => pg_analytics/src}/schema/datetime.rs (100%) rename {src => pg_analytics/src}/schema/mod.rs (100%) rename {tests => pg_analytics/tests}/datetime.rs (100%) rename {tests => pg_analytics/tests}/explain.rs (100%) rename {tests => pg_analytics/tests}/fixtures/arrow.rs (100%) rename {tests => pg_analytics/tests}/fixtures/db.rs (100%) rename {tests => pg_analytics/tests}/fixtures/mod.rs (100%) rename {tests => pg_analytics/tests}/fixtures/tables/duckdb_types.rs (100%) rename {tests => pg_analytics/tests}/fixtures/tables/mod.rs (100%) rename {tests => pg_analytics/tests}/fixtures/tables/nyc_trips.rs (100%) rename {tests => pg_analytics/tests}/json.rs (100%) rename {tests => pg_analytics/tests}/scan.rs (100%) rename {tests => pg_analytics/tests}/settings.rs (100%) rename {tests => pg_analytics/tests}/spatial.rs (100%) rename {tests => pg_analytics/tests}/table_config.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 020fd677..a6495384 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,52 +1,11 @@ -[package] -name = "pg_analytics" -description = "Postgres for analytics, powered by DuckDB" -version = "0.2.0" -edition = "2021" -license = "AGPL-3.0" +[workspace] +members = ["pg_analytics"] +resolver = "2" -[lib] -crate-type = ["cdylib", "rlib"] - -[features] -default = ["pg17"] -pg13 = ["pgrx/pg13", "pgrx-tests/pg13", "supabase-wrappers/pg13"] -pg14 = ["pgrx/pg14", "pgrx-tests/pg14", "supabase-wrappers/pg14"] -pg15 = ["pgrx/pg15", "pgrx-tests/pg15", "supabase-wrappers/pg15"] -pg16 = ["pgrx/pg16", "pgrx-tests/pg16", "supabase-wrappers/pg16"] -pg17 = ["pgrx/pg17", "pgrx-tests/pg17", "supabase-wrappers/pg17"] -pg_test = [] - -[dependencies] +[workspace.dependencies] anyhow = "1.0.88" async-std = { version = "1.13.0", features = ["tokio1", "attributes"] } -chrono = "0.4.38" -duckdb = { git = "https://github.com/paradedb/duckdb-rs.git", features = [ - "bundled", - "extensions-full", -], rev = "e532dd6" } -pgrx = "0.12.5" -serde = "1.0.210" -serde_json = "1.0.128" -signal-hook = "0.3.17" -sqlparser = "0.50.0" -strum = { version = "0.26.3", features = ["derive"] } -supabase-wrappers = { git = "https://github.com/paradedb/wrappers.git", default-features = false, rev = "c32abb7" } thiserror = "1.0.63" -uuid = "1.10.0" - -[dev-dependencies] -aws-config = "1.5.6" -aws-sdk-s3 = "1.49.0" -bigdecimal = { version = "0.3.1", features = ["serde"] } -bytes = "1.7.1" -datafusion = "37.1.0" -deltalake = { version = "0.17.3", features = ["datafusion"] } -futures = "0.3.30" -pgrx-tests = "0.12.5" -rstest = "0.19.0" -serde_arrow = { version = "0.11.7", features = ["arrow-51"] } -soa_derive = "0.13.0" sqlx = { version = "0.7.4", features = [ "postgres", "runtime-async-std", @@ -55,12 +14,3 @@ sqlx = { version = "0.7.4", features = [ "uuid", "chrono", ] } -tempfile = "3.12.0" -testcontainers = "0.16.7" -testcontainers-modules = { version = "0.4.3", features = ["localstack"] } -time = { version = "0.3.36", features = ["serde"] } -geojson = "0.24.1" - -[[bin]] -name = "pgrx_embed_pg_analytics" -path = "src/bin/pgrx_embed.rs" diff --git a/pg_analytics/Cargo.toml b/pg_analytics/Cargo.toml new file mode 100644 index 00000000..e19d046e --- /dev/null +++ b/pg_analytics/Cargo.toml @@ -0,0 +1,59 @@ +[package] +name = "pg_analytics" +description = "Postgres for analytics, powered by DuckDB" +version = "0.2.0" +edition = "2021" +license = "AGPL-3.0" + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +default = ["pg17"] +pg13 = ["pgrx/pg13", "pgrx-tests/pg13", "supabase-wrappers/pg13"] +pg14 = ["pgrx/pg14", "pgrx-tests/pg14", "supabase-wrappers/pg14"] +pg15 = ["pgrx/pg15", "pgrx-tests/pg15", "supabase-wrappers/pg15"] +pg16 = ["pgrx/pg16", "pgrx-tests/pg16", "supabase-wrappers/pg16"] +pg17 = ["pgrx/pg17", "pgrx-tests/pg17", "supabase-wrappers/pg17"] +pg_test = [] + +[dependencies] +anyhow = { workspace = true } +async-std = { workspace = true } +chrono = "0.4.38" +duckdb = { git = "https://github.com/paradedb/duckdb-rs.git", features = [ + "bundled", + "extensions-full", +], rev = "e532dd6" } +pgrx = "0.12.5" +serde = "1.0.210" +serde_json = "1.0.128" +signal-hook = "0.3.17" +sqlparser = "0.50.0" +strum = { version = "0.26.3", features = ["derive"] } +supabase-wrappers = { git = "https://github.com/paradedb/wrappers.git", default-features = false, rev = "c32abb7" } +thiserror = { workspace = true } +uuid = "1.10.0" + +[dev-dependencies] +aws-config = "1.5.6" +aws-sdk-s3 = "1.49.0" +bigdecimal = { version = "0.3.1", features = ["serde"] } +bytes = "1.7.1" +datafusion = "37.1.0" +deltalake = { version = "0.17.3", features = ["datafusion"] } +futures = "0.3.30" +pgrx-tests = "0.12.5" +rstest = "0.19.0" +serde_arrow = { version = "0.11.7", features = ["arrow-51"] } +soa_derive = "0.13.0" +sqlx = { workspace = true } +tempfile = "3.12.0" +testcontainers = "0.16.7" +testcontainers-modules = { version = "0.4.3", features = ["localstack"] } +time = { version = "0.3.36", features = ["serde"] } +geojson = "0.24.1" + +[[bin]] +name = "pgrx_embed_pg_analytics" +path = "src/bin/pgrx_embed.rs" diff --git a/pg_analytics.control b/pg_analytics/pg_analytics.control similarity index 100% rename from pg_analytics.control rename to pg_analytics/pg_analytics.control diff --git a/sql/pg_analytics--0.1.0--0.1.1.sql b/pg_analytics/sql/pg_analytics--0.1.0--0.1.1.sql similarity index 100% rename from sql/pg_analytics--0.1.0--0.1.1.sql rename to pg_analytics/sql/pg_analytics--0.1.0--0.1.1.sql diff --git a/sql/pg_analytics--0.1.1--0.1.2.sql b/pg_analytics/sql/pg_analytics--0.1.1--0.1.2.sql similarity index 100% rename from sql/pg_analytics--0.1.1--0.1.2.sql rename to pg_analytics/sql/pg_analytics--0.1.1--0.1.2.sql diff --git a/sql/pg_analytics--0.1.2--0.1.3.sql b/pg_analytics/sql/pg_analytics--0.1.2--0.1.3.sql similarity index 100% rename from sql/pg_analytics--0.1.2--0.1.3.sql rename to pg_analytics/sql/pg_analytics--0.1.2--0.1.3.sql diff --git a/sql/pg_analytics--0.1.3--0.1.4.sql b/pg_analytics/sql/pg_analytics--0.1.3--0.1.4.sql similarity index 100% rename from sql/pg_analytics--0.1.3--0.1.4.sql rename to pg_analytics/sql/pg_analytics--0.1.3--0.1.4.sql diff --git a/sql/pg_analytics--0.1.4--0.2.0.sql b/pg_analytics/sql/pg_analytics--0.1.4--0.2.0.sql similarity index 100% rename from sql/pg_analytics--0.1.4--0.2.0.sql rename to pg_analytics/sql/pg_analytics--0.1.4--0.2.0.sql diff --git a/src/api/csv.rs b/pg_analytics/src/api/csv.rs similarity index 100% rename from src/api/csv.rs rename to pg_analytics/src/api/csv.rs diff --git a/src/api/duckdb.rs b/pg_analytics/src/api/duckdb.rs similarity index 100% rename from src/api/duckdb.rs rename to pg_analytics/src/api/duckdb.rs diff --git a/src/api/mod.rs b/pg_analytics/src/api/mod.rs similarity index 100% rename from src/api/mod.rs rename to pg_analytics/src/api/mod.rs diff --git a/src/api/parquet.rs b/pg_analytics/src/api/parquet.rs similarity index 100% rename from src/api/parquet.rs rename to pg_analytics/src/api/parquet.rs diff --git a/src/api/time_bucket.rs b/pg_analytics/src/api/time_bucket.rs similarity index 100% rename from src/api/time_bucket.rs rename to pg_analytics/src/api/time_bucket.rs diff --git a/src/bin/pgrx_embed.rs b/pg_analytics/src/bin/pgrx_embed.rs similarity index 100% rename from src/bin/pgrx_embed.rs rename to pg_analytics/src/bin/pgrx_embed.rs diff --git a/src/debug_guc.rs b/pg_analytics/src/debug_guc.rs similarity index 100% rename from src/debug_guc.rs rename to pg_analytics/src/debug_guc.rs diff --git a/src/duckdb/connection.rs b/pg_analytics/src/duckdb/connection.rs similarity index 100% rename from src/duckdb/connection.rs rename to pg_analytics/src/duckdb/connection.rs diff --git a/src/duckdb/csv.rs b/pg_analytics/src/duckdb/csv.rs similarity index 100% rename from src/duckdb/csv.rs rename to pg_analytics/src/duckdb/csv.rs diff --git a/src/duckdb/delta.rs b/pg_analytics/src/duckdb/delta.rs similarity index 100% rename from src/duckdb/delta.rs rename to pg_analytics/src/duckdb/delta.rs diff --git a/src/duckdb/iceberg.rs b/pg_analytics/src/duckdb/iceberg.rs similarity index 100% rename from src/duckdb/iceberg.rs rename to pg_analytics/src/duckdb/iceberg.rs diff --git a/src/duckdb/json.rs b/pg_analytics/src/duckdb/json.rs similarity index 100% rename from src/duckdb/json.rs rename to pg_analytics/src/duckdb/json.rs diff --git a/src/duckdb/mod.rs b/pg_analytics/src/duckdb/mod.rs similarity index 100% rename from src/duckdb/mod.rs rename to pg_analytics/src/duckdb/mod.rs diff --git a/src/duckdb/parquet.rs b/pg_analytics/src/duckdb/parquet.rs similarity index 100% rename from src/duckdb/parquet.rs rename to pg_analytics/src/duckdb/parquet.rs diff --git a/src/duckdb/secret.rs b/pg_analytics/src/duckdb/secret.rs similarity index 100% rename from src/duckdb/secret.rs rename to pg_analytics/src/duckdb/secret.rs diff --git a/src/duckdb/spatial.rs b/pg_analytics/src/duckdb/spatial.rs similarity index 100% rename from src/duckdb/spatial.rs rename to pg_analytics/src/duckdb/spatial.rs diff --git a/src/duckdb/utils.rs b/pg_analytics/src/duckdb/utils.rs similarity index 100% rename from src/duckdb/utils.rs rename to pg_analytics/src/duckdb/utils.rs diff --git a/src/fdw/base.rs b/pg_analytics/src/fdw/base.rs similarity index 100% rename from src/fdw/base.rs rename to pg_analytics/src/fdw/base.rs diff --git a/src/fdw/csv.rs b/pg_analytics/src/fdw/csv.rs similarity index 100% rename from src/fdw/csv.rs rename to pg_analytics/src/fdw/csv.rs diff --git a/src/fdw/delta.rs b/pg_analytics/src/fdw/delta.rs similarity index 100% rename from src/fdw/delta.rs rename to pg_analytics/src/fdw/delta.rs diff --git a/src/fdw/handler.rs b/pg_analytics/src/fdw/handler.rs similarity index 100% rename from src/fdw/handler.rs rename to pg_analytics/src/fdw/handler.rs diff --git a/src/fdw/iceberg.rs b/pg_analytics/src/fdw/iceberg.rs similarity index 100% rename from src/fdw/iceberg.rs rename to pg_analytics/src/fdw/iceberg.rs diff --git a/src/fdw/json.rs b/pg_analytics/src/fdw/json.rs similarity index 100% rename from src/fdw/json.rs rename to pg_analytics/src/fdw/json.rs diff --git a/src/fdw/mod.rs b/pg_analytics/src/fdw/mod.rs similarity index 100% rename from src/fdw/mod.rs rename to pg_analytics/src/fdw/mod.rs diff --git a/src/fdw/parquet.rs b/pg_analytics/src/fdw/parquet.rs similarity index 100% rename from src/fdw/parquet.rs rename to pg_analytics/src/fdw/parquet.rs diff --git a/src/fdw/spatial.rs b/pg_analytics/src/fdw/spatial.rs similarity index 100% rename from src/fdw/spatial.rs rename to pg_analytics/src/fdw/spatial.rs diff --git a/src/fdw/trigger.rs b/pg_analytics/src/fdw/trigger.rs similarity index 100% rename from src/fdw/trigger.rs rename to pg_analytics/src/fdw/trigger.rs diff --git a/src/hooks/executor.rs b/pg_analytics/src/hooks/executor.rs similarity index 100% rename from src/hooks/executor.rs rename to pg_analytics/src/hooks/executor.rs diff --git a/src/hooks/mod.rs b/pg_analytics/src/hooks/mod.rs similarity index 100% rename from src/hooks/mod.rs rename to pg_analytics/src/hooks/mod.rs diff --git a/src/hooks/query.rs b/pg_analytics/src/hooks/query.rs similarity index 100% rename from src/hooks/query.rs rename to pg_analytics/src/hooks/query.rs diff --git a/src/hooks/utility.rs b/pg_analytics/src/hooks/utility.rs similarity index 100% rename from src/hooks/utility.rs rename to pg_analytics/src/hooks/utility.rs diff --git a/src/lib.rs b/pg_analytics/src/lib.rs similarity index 100% rename from src/lib.rs rename to pg_analytics/src/lib.rs diff --git a/src/schema/cell.rs b/pg_analytics/src/schema/cell.rs similarity index 100% rename from src/schema/cell.rs rename to pg_analytics/src/schema/cell.rs diff --git a/src/schema/datetime.rs b/pg_analytics/src/schema/datetime.rs similarity index 100% rename from src/schema/datetime.rs rename to pg_analytics/src/schema/datetime.rs diff --git a/src/schema/mod.rs b/pg_analytics/src/schema/mod.rs similarity index 100% rename from src/schema/mod.rs rename to pg_analytics/src/schema/mod.rs diff --git a/tests/datetime.rs b/pg_analytics/tests/datetime.rs similarity index 100% rename from tests/datetime.rs rename to pg_analytics/tests/datetime.rs diff --git a/tests/explain.rs b/pg_analytics/tests/explain.rs similarity index 100% rename from tests/explain.rs rename to pg_analytics/tests/explain.rs diff --git a/tests/fixtures/arrow.rs b/pg_analytics/tests/fixtures/arrow.rs similarity index 100% rename from tests/fixtures/arrow.rs rename to pg_analytics/tests/fixtures/arrow.rs diff --git a/tests/fixtures/db.rs b/pg_analytics/tests/fixtures/db.rs similarity index 100% rename from tests/fixtures/db.rs rename to pg_analytics/tests/fixtures/db.rs diff --git a/tests/fixtures/mod.rs b/pg_analytics/tests/fixtures/mod.rs similarity index 100% rename from tests/fixtures/mod.rs rename to pg_analytics/tests/fixtures/mod.rs diff --git a/tests/fixtures/tables/duckdb_types.rs b/pg_analytics/tests/fixtures/tables/duckdb_types.rs similarity index 100% rename from tests/fixtures/tables/duckdb_types.rs rename to pg_analytics/tests/fixtures/tables/duckdb_types.rs diff --git a/tests/fixtures/tables/mod.rs b/pg_analytics/tests/fixtures/tables/mod.rs similarity index 100% rename from tests/fixtures/tables/mod.rs rename to pg_analytics/tests/fixtures/tables/mod.rs diff --git a/tests/fixtures/tables/nyc_trips.rs b/pg_analytics/tests/fixtures/tables/nyc_trips.rs similarity index 100% rename from tests/fixtures/tables/nyc_trips.rs rename to pg_analytics/tests/fixtures/tables/nyc_trips.rs diff --git a/tests/json.rs b/pg_analytics/tests/json.rs similarity index 100% rename from tests/json.rs rename to pg_analytics/tests/json.rs diff --git a/tests/scan.rs b/pg_analytics/tests/scan.rs similarity index 100% rename from tests/scan.rs rename to pg_analytics/tests/scan.rs diff --git a/tests/settings.rs b/pg_analytics/tests/settings.rs similarity index 100% rename from tests/settings.rs rename to pg_analytics/tests/settings.rs diff --git a/tests/spatial.rs b/pg_analytics/tests/spatial.rs similarity index 100% rename from tests/spatial.rs rename to pg_analytics/tests/spatial.rs diff --git a/tests/table_config.rs b/pg_analytics/tests/table_config.rs similarity index 100% rename from tests/table_config.rs rename to pg_analytics/tests/table_config.rs