data-flow-control 0.1.2__tar.gz → 0.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/Cargo.lock +73 -74
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/Cargo.toml +1 -1
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/PKG-INFO +1 -1
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/catalog.rs +84 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/compiled.rs +2 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/dimensions.rs +21 -11
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/actions.rs +11 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/resolution.rs +88 -1
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/select.rs +2 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/columns.rs +65 -2
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/mod.rs +1 -1
- data_flow_control-0.1.4/passant-core/tests/execution/kill.rs +116 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/dimensions.rs +37 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/insert_shapes.rs +74 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/scan.rs +28 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/pyproject.toml +1 -1
- data_flow_control-0.1.2/passant-core/tests/execution/kill.rs +0 -48
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/LICENSE +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/Cargo.toml +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/benches/rewrite_perf.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/aggregate_registry.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/diagnostics.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/explain.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/full_push.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/identifiers.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/intern.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/ir.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/lib.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/optimizer.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/parser.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/partial_push.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/planner.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_compile.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_index.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_parser.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_pgn.pest +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/branch.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/delete.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/indexes.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/memory.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/query_analysis.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewrite_stats.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewrite_strategy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/aggregates.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/columns.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/constraint_preprocess.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/derived_policy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/exists.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/expr.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/helpers.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/limit.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/applicability.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/dominance.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/scope_plan.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/plan/write_plan.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/policy_expr.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/projection.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/scope.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/types.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/rewriter/write_path.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/semiring.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_set_index.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/analysis.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/annotations.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/branch.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/rewrites.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/source_sets/split.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/ast_stats.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/builders.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/dialect.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/expr.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/expr_key.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/parse.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/sql/render.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/statement_tables.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/threshold.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/common/duckdb.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/common/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/conformance.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/main.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/partial_push.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/pgn.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/pgn_unique.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/policy_storage.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/rewrite_api_parity.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/semiring.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/source_sets.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/symmetric_self_join.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/threshold.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/completion/unique_not_unique.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/dialect.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/execution/insert.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/execution/main.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/execution/oracle.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/execution/remove.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/execution/update.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/expected/duckdb/remove_scan.sql +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/expected/postgres/remove_scan.sql +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/expected/sqlite/remove_scan.sql +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/explain_strategy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/column_propagation.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/exists_join.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/having_where.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/identifiers.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/main.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/multi_source.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/operators.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/query_shapes.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/gaps/scalar_subquery.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/indexed_candidate_differential.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/insert_values_body.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/paper_examples.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/parser.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/planner.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/policy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/policy_dialect.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/policy_store_memory.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/derived_policy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/in_semijoin.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/insert.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/joins.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/main.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/output.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/recursive.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite/update.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite_candidate_regression.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite_fast_paths.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite_large_registry.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/rewrite_stats_timings.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/scan_ready_expr.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/source_set_split_no_parse.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/sql_builders.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/sql_columns.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/tests/ui_resolution.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/Cargo.toml +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/catalog.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/errors.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/mod.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/planner.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/policy.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/bindings/stats.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-py/src/lib.rs +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/__init__.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/_rust.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/__init__.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/base.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/clickhouse.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/datafusion.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/duckdb.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/kill.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/pg_catalog.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/postgres.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/registry.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/sqlite.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/adapters/umbra.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/aggregate_introspection.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/catalog.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/connection.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/dialect.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/__init__.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/agent.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/call_tool_with_dataflow.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/database.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/middleware.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/schema.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/sql_validation.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/tool_spec.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/langchain/wrapper.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/options.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/planner.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/policy.py +0 -0
- {data_flow_control-0.1.2 → data_flow_control-0.1.4}/python/data_flow_control/ui.py +0 -0
|
@@ -323,9 +323,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
|
|
323
323
|
|
|
324
324
|
[[package]]
|
|
325
325
|
name = "autocfg"
|
|
326
|
-
version = "1.5.
|
|
326
|
+
version = "1.5.1"
|
|
327
327
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
328
|
-
checksum = "
|
|
328
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
329
329
|
|
|
330
330
|
[[package]]
|
|
331
331
|
name = "base64"
|
|
@@ -335,9 +335,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
|
335
335
|
|
|
336
336
|
[[package]]
|
|
337
337
|
name = "bitflags"
|
|
338
|
-
version = "2.
|
|
338
|
+
version = "2.13.0"
|
|
339
339
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
340
|
-
checksum = "
|
|
340
|
+
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
|
341
341
|
|
|
342
342
|
[[package]]
|
|
343
343
|
name = "bitvec"
|
|
@@ -449,9 +449,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
449
449
|
|
|
450
450
|
[[package]]
|
|
451
451
|
name = "cc"
|
|
452
|
-
version = "1.2.
|
|
452
|
+
version = "1.2.64"
|
|
453
453
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
454
|
-
checksum = "
|
|
454
|
+
checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
|
|
455
455
|
dependencies = [
|
|
456
456
|
"find-msvc-tools",
|
|
457
457
|
"jobserver",
|
|
@@ -473,9 +473,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
|
|
473
473
|
|
|
474
474
|
[[package]]
|
|
475
475
|
name = "chrono"
|
|
476
|
-
version = "0.4.
|
|
476
|
+
version = "0.4.45"
|
|
477
477
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
478
|
-
checksum = "
|
|
478
|
+
checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
|
|
479
479
|
dependencies = [
|
|
480
480
|
"iana-time-zone",
|
|
481
481
|
"num-traits",
|
|
@@ -511,9 +511,9 @@ dependencies = [
|
|
|
511
511
|
|
|
512
512
|
[[package]]
|
|
513
513
|
name = "clap"
|
|
514
|
-
version = "4.6.
|
|
514
|
+
version = "4.6.1"
|
|
515
515
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
516
|
-
checksum = "
|
|
516
|
+
checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
|
|
517
517
|
dependencies = [
|
|
518
518
|
"clap_builder",
|
|
519
519
|
"clap_derive",
|
|
@@ -533,9 +533,9 @@ dependencies = [
|
|
|
533
533
|
|
|
534
534
|
[[package]]
|
|
535
535
|
name = "clap_derive"
|
|
536
|
-
version = "4.6.
|
|
536
|
+
version = "4.6.1"
|
|
537
537
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
538
|
-
checksum = "
|
|
538
|
+
checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
|
|
539
539
|
dependencies = [
|
|
540
540
|
"heck",
|
|
541
541
|
"proc-macro2",
|
|
@@ -744,9 +744,9 @@ dependencies = [
|
|
|
744
744
|
|
|
745
745
|
[[package]]
|
|
746
746
|
name = "displaydoc"
|
|
747
|
-
version = "0.2.
|
|
747
|
+
version = "0.2.6"
|
|
748
748
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
749
|
-
checksum = "
|
|
749
|
+
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
|
|
750
750
|
dependencies = [
|
|
751
751
|
"proc-macro2",
|
|
752
752
|
"quote",
|
|
@@ -1008,9 +1008,9 @@ checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
|
|
|
1008
1008
|
|
|
1009
1009
|
[[package]]
|
|
1010
1010
|
name = "http"
|
|
1011
|
-
version = "1.4.
|
|
1011
|
+
version = "1.4.2"
|
|
1012
1012
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1013
|
-
checksum = "
|
|
1013
|
+
checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
|
|
1014
1014
|
dependencies = [
|
|
1015
1015
|
"bytes",
|
|
1016
1016
|
"itoa",
|
|
@@ -1047,9 +1047,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
|
|
1047
1047
|
|
|
1048
1048
|
[[package]]
|
|
1049
1049
|
name = "hyper"
|
|
1050
|
-
version = "1.
|
|
1050
|
+
version = "1.10.1"
|
|
1051
1051
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1052
|
-
checksum = "
|
|
1052
|
+
checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
|
|
1053
1053
|
dependencies = [
|
|
1054
1054
|
"atomic-waker",
|
|
1055
1055
|
"bytes",
|
|
@@ -1300,13 +1300,12 @@ dependencies = [
|
|
|
1300
1300
|
|
|
1301
1301
|
[[package]]
|
|
1302
1302
|
name = "js-sys"
|
|
1303
|
-
version = "0.3.
|
|
1303
|
+
version = "0.3.102"
|
|
1304
1304
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1305
|
-
checksum = "
|
|
1305
|
+
checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
|
|
1306
1306
|
dependencies = [
|
|
1307
1307
|
"cfg-if",
|
|
1308
1308
|
"futures-util",
|
|
1309
|
-
"once_cell",
|
|
1310
1309
|
"wasm-bindgen",
|
|
1311
1310
|
]
|
|
1312
1311
|
|
|
@@ -1369,9 +1368,9 @@ dependencies = [
|
|
|
1369
1368
|
|
|
1370
1369
|
[[package]]
|
|
1371
1370
|
name = "libc"
|
|
1372
|
-
version = "0.2.
|
|
1371
|
+
version = "0.2.186"
|
|
1373
1372
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1374
|
-
checksum = "
|
|
1373
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
1375
1374
|
|
|
1376
1375
|
[[package]]
|
|
1377
1376
|
name = "libduckdb-sys"
|
|
@@ -1425,9 +1424,9 @@ dependencies = [
|
|
|
1425
1424
|
|
|
1426
1425
|
[[package]]
|
|
1427
1426
|
name = "log"
|
|
1428
|
-
version = "0.4.
|
|
1427
|
+
version = "0.4.32"
|
|
1429
1428
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1430
|
-
checksum = "
|
|
1429
|
+
checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
|
|
1431
1430
|
|
|
1432
1431
|
[[package]]
|
|
1433
1432
|
name = "lru-slab"
|
|
@@ -1437,9 +1436,9 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
|
|
|
1437
1436
|
|
|
1438
1437
|
[[package]]
|
|
1439
1438
|
name = "memchr"
|
|
1440
|
-
version = "2.8.
|
|
1439
|
+
version = "2.8.2"
|
|
1441
1440
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1442
|
-
checksum = "
|
|
1441
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
1443
1442
|
|
|
1444
1443
|
[[package]]
|
|
1445
1444
|
name = "memoffset"
|
|
@@ -1462,9 +1461,9 @@ dependencies = [
|
|
|
1462
1461
|
|
|
1463
1462
|
[[package]]
|
|
1464
1463
|
name = "mio"
|
|
1465
|
-
version = "1.2.
|
|
1464
|
+
version = "1.2.1"
|
|
1466
1465
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1467
|
-
checksum = "
|
|
1466
|
+
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
|
1468
1467
|
dependencies = [
|
|
1469
1468
|
"libc",
|
|
1470
1469
|
"wasi",
|
|
@@ -1594,7 +1593,7 @@ dependencies = [
|
|
|
1594
1593
|
|
|
1595
1594
|
[[package]]
|
|
1596
1595
|
name = "passant-cli"
|
|
1597
|
-
version = "0.1.
|
|
1596
|
+
version = "0.1.4"
|
|
1598
1597
|
dependencies = [
|
|
1599
1598
|
"anyhow",
|
|
1600
1599
|
"assert_cmd",
|
|
@@ -1606,7 +1605,7 @@ dependencies = [
|
|
|
1606
1605
|
|
|
1607
1606
|
[[package]]
|
|
1608
1607
|
name = "passant-core"
|
|
1609
|
-
version = "0.1.
|
|
1608
|
+
version = "0.1.4"
|
|
1610
1609
|
dependencies = [
|
|
1611
1610
|
"anyhow",
|
|
1612
1611
|
"criterion",
|
|
@@ -1624,7 +1623,7 @@ dependencies = [
|
|
|
1624
1623
|
|
|
1625
1624
|
[[package]]
|
|
1626
1625
|
name = "passant-py"
|
|
1627
|
-
version = "0.1.
|
|
1626
|
+
version = "0.1.4"
|
|
1628
1627
|
dependencies = [
|
|
1629
1628
|
"passant-core",
|
|
1630
1629
|
"pyo3",
|
|
@@ -2052,9 +2051,9 @@ dependencies = [
|
|
|
2052
2051
|
|
|
2053
2052
|
[[package]]
|
|
2054
2053
|
name = "regex"
|
|
2055
|
-
version = "1.12.
|
|
2054
|
+
version = "1.12.4"
|
|
2056
2055
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2057
|
-
checksum = "
|
|
2056
|
+
checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
|
|
2058
2057
|
dependencies = [
|
|
2059
2058
|
"aho-corasick",
|
|
2060
2059
|
"memchr",
|
|
@@ -2075,9 +2074,9 @@ dependencies = [
|
|
|
2075
2074
|
|
|
2076
2075
|
[[package]]
|
|
2077
2076
|
name = "regex-syntax"
|
|
2078
|
-
version = "0.8.
|
|
2077
|
+
version = "0.8.11"
|
|
2079
2078
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2080
|
-
checksum = "
|
|
2079
|
+
checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
|
|
2081
2080
|
|
|
2082
2081
|
[[package]]
|
|
2083
2082
|
name = "rend"
|
|
@@ -2183,9 +2182,9 @@ dependencies = [
|
|
|
2183
2182
|
|
|
2184
2183
|
[[package]]
|
|
2185
2184
|
name = "rust_decimal"
|
|
2186
|
-
version = "1.42.
|
|
2185
|
+
version = "1.42.1"
|
|
2187
2186
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2188
|
-
checksum = "
|
|
2187
|
+
checksum = "be2a24f50780bc85f09cc6ac299bdf1424302742d77221106859c9d8b102126a"
|
|
2189
2188
|
dependencies = [
|
|
2190
2189
|
"arrayvec",
|
|
2191
2190
|
"borsh",
|
|
@@ -2330,9 +2329,9 @@ dependencies = [
|
|
|
2330
2329
|
|
|
2331
2330
|
[[package]]
|
|
2332
2331
|
name = "serde_json"
|
|
2333
|
-
version = "1.0.
|
|
2332
|
+
version = "1.0.150"
|
|
2334
2333
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2335
|
-
checksum = "
|
|
2334
|
+
checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
|
|
2336
2335
|
dependencies = [
|
|
2337
2336
|
"itoa",
|
|
2338
2337
|
"memchr",
|
|
@@ -2366,9 +2365,9 @@ dependencies = [
|
|
|
2366
2365
|
|
|
2367
2366
|
[[package]]
|
|
2368
2367
|
name = "shlex"
|
|
2369
|
-
version = "
|
|
2368
|
+
version = "2.0.1"
|
|
2370
2369
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2371
|
-
checksum = "
|
|
2370
|
+
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
2372
2371
|
|
|
2373
2372
|
[[package]]
|
|
2374
2373
|
name = "simd-adler32"
|
|
@@ -2390,15 +2389,15 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
|
|
|
2390
2389
|
|
|
2391
2390
|
[[package]]
|
|
2392
2391
|
name = "smallvec"
|
|
2393
|
-
version = "1.15.
|
|
2392
|
+
version = "1.15.2"
|
|
2394
2393
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2395
|
-
checksum = "
|
|
2394
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
2396
2395
|
|
|
2397
2396
|
[[package]]
|
|
2398
2397
|
name = "socket2"
|
|
2399
|
-
version = "0.6.
|
|
2398
|
+
version = "0.6.4"
|
|
2400
2399
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2401
|
-
checksum = "
|
|
2400
|
+
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
|
2402
2401
|
dependencies = [
|
|
2403
2402
|
"libc",
|
|
2404
2403
|
"windows-sys 0.61.2",
|
|
@@ -2623,9 +2622,9 @@ dependencies = [
|
|
|
2623
2622
|
|
|
2624
2623
|
[[package]]
|
|
2625
2624
|
name = "toml_edit"
|
|
2626
|
-
version = "0.25.
|
|
2625
|
+
version = "0.25.12+spec-1.1.0"
|
|
2627
2626
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2628
|
-
checksum = "
|
|
2627
|
+
checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
|
|
2629
2628
|
dependencies = [
|
|
2630
2629
|
"indexmap",
|
|
2631
2630
|
"toml_datetime",
|
|
@@ -2732,9 +2731,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
|
2732
2731
|
|
|
2733
2732
|
[[package]]
|
|
2734
2733
|
name = "unicode-segmentation"
|
|
2735
|
-
version = "1.13.
|
|
2734
|
+
version = "1.13.3"
|
|
2736
2735
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2737
|
-
checksum = "
|
|
2736
|
+
checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
|
|
2738
2737
|
|
|
2739
2738
|
[[package]]
|
|
2740
2739
|
name = "unicode-width"
|
|
@@ -2780,9 +2779,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
|
2780
2779
|
|
|
2781
2780
|
[[package]]
|
|
2782
2781
|
name = "uuid"
|
|
2783
|
-
version = "1.23.
|
|
2782
|
+
version = "1.23.3"
|
|
2784
2783
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2785
|
-
checksum = "
|
|
2784
|
+
checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
|
|
2786
2785
|
dependencies = [
|
|
2787
2786
|
"js-sys",
|
|
2788
2787
|
"wasm-bindgen",
|
|
@@ -2836,18 +2835,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
|
|
2836
2835
|
|
|
2837
2836
|
[[package]]
|
|
2838
2837
|
name = "wasip2"
|
|
2839
|
-
version = "1.0.
|
|
2838
|
+
version = "1.0.4+wasi-0.2.12"
|
|
2840
2839
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2841
|
-
checksum = "
|
|
2840
|
+
checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
|
|
2842
2841
|
dependencies = [
|
|
2843
2842
|
"wit-bindgen",
|
|
2844
2843
|
]
|
|
2845
2844
|
|
|
2846
2845
|
[[package]]
|
|
2847
2846
|
name = "wasm-bindgen"
|
|
2848
|
-
version = "0.2.
|
|
2847
|
+
version = "0.2.125"
|
|
2849
2848
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2850
|
-
checksum = "
|
|
2849
|
+
checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
|
|
2851
2850
|
dependencies = [
|
|
2852
2851
|
"cfg-if",
|
|
2853
2852
|
"once_cell",
|
|
@@ -2859,9 +2858,9 @@ dependencies = [
|
|
|
2859
2858
|
|
|
2860
2859
|
[[package]]
|
|
2861
2860
|
name = "wasm-bindgen-futures"
|
|
2862
|
-
version = "0.4.
|
|
2861
|
+
version = "0.4.75"
|
|
2863
2862
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2864
|
-
checksum = "
|
|
2863
|
+
checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280"
|
|
2865
2864
|
dependencies = [
|
|
2866
2865
|
"js-sys",
|
|
2867
2866
|
"wasm-bindgen",
|
|
@@ -2869,9 +2868,9 @@ dependencies = [
|
|
|
2869
2868
|
|
|
2870
2869
|
[[package]]
|
|
2871
2870
|
name = "wasm-bindgen-macro"
|
|
2872
|
-
version = "0.2.
|
|
2871
|
+
version = "0.2.125"
|
|
2873
2872
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2874
|
-
checksum = "
|
|
2873
|
+
checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
|
|
2875
2874
|
dependencies = [
|
|
2876
2875
|
"quote",
|
|
2877
2876
|
"wasm-bindgen-macro-support",
|
|
@@ -2879,9 +2878,9 @@ dependencies = [
|
|
|
2879
2878
|
|
|
2880
2879
|
[[package]]
|
|
2881
2880
|
name = "wasm-bindgen-macro-support"
|
|
2882
|
-
version = "0.2.
|
|
2881
|
+
version = "0.2.125"
|
|
2883
2882
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2884
|
-
checksum = "
|
|
2883
|
+
checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
|
|
2885
2884
|
dependencies = [
|
|
2886
2885
|
"bumpalo",
|
|
2887
2886
|
"proc-macro2",
|
|
@@ -2892,18 +2891,18 @@ dependencies = [
|
|
|
2892
2891
|
|
|
2893
2892
|
[[package]]
|
|
2894
2893
|
name = "wasm-bindgen-shared"
|
|
2895
|
-
version = "0.2.
|
|
2894
|
+
version = "0.2.125"
|
|
2896
2895
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2897
|
-
checksum = "
|
|
2896
|
+
checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
|
|
2898
2897
|
dependencies = [
|
|
2899
2898
|
"unicode-ident",
|
|
2900
2899
|
]
|
|
2901
2900
|
|
|
2902
2901
|
[[package]]
|
|
2903
2902
|
name = "web-sys"
|
|
2904
|
-
version = "0.3.
|
|
2903
|
+
version = "0.3.102"
|
|
2905
2904
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2906
|
-
checksum = "
|
|
2905
|
+
checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
|
|
2907
2906
|
dependencies = [
|
|
2908
2907
|
"js-sys",
|
|
2909
2908
|
"wasm-bindgen",
|
|
@@ -3231,9 +3230,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
|
|
|
3231
3230
|
|
|
3232
3231
|
[[package]]
|
|
3233
3232
|
name = "yoke"
|
|
3234
|
-
version = "0.8.
|
|
3233
|
+
version = "0.8.3"
|
|
3235
3234
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3236
|
-
checksum = "
|
|
3235
|
+
checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
|
|
3237
3236
|
dependencies = [
|
|
3238
3237
|
"stable_deref_trait",
|
|
3239
3238
|
"yoke-derive",
|
|
@@ -3254,18 +3253,18 @@ dependencies = [
|
|
|
3254
3253
|
|
|
3255
3254
|
[[package]]
|
|
3256
3255
|
name = "zerocopy"
|
|
3257
|
-
version = "0.8.
|
|
3256
|
+
version = "0.8.52"
|
|
3258
3257
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3259
|
-
checksum = "
|
|
3258
|
+
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
|
|
3260
3259
|
dependencies = [
|
|
3261
3260
|
"zerocopy-derive",
|
|
3262
3261
|
]
|
|
3263
3262
|
|
|
3264
3263
|
[[package]]
|
|
3265
3264
|
name = "zerocopy-derive"
|
|
3266
|
-
version = "0.8.
|
|
3265
|
+
version = "0.8.52"
|
|
3267
3266
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3268
|
-
checksum = "
|
|
3267
|
+
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
|
|
3269
3268
|
dependencies = [
|
|
3270
3269
|
"proc-macro2",
|
|
3271
3270
|
"quote",
|
|
@@ -3295,9 +3294,9 @@ dependencies = [
|
|
|
3295
3294
|
|
|
3296
3295
|
[[package]]
|
|
3297
3296
|
name = "zeroize"
|
|
3298
|
-
version = "1.
|
|
3297
|
+
version = "1.9.0"
|
|
3299
3298
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3300
|
-
checksum = "
|
|
3299
|
+
checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
|
3301
3300
|
|
|
3302
3301
|
[[package]]
|
|
3303
3302
|
name = "zerotrie"
|
|
@@ -16,6 +16,7 @@ use crate::policy::{PolicyIr, Resolution};
|
|
|
16
16
|
use crate::policy_compile::{
|
|
17
17
|
ParsedPolicyConstraint, parse_policy_constraint, parse_policy_constraint_with_registry,
|
|
18
18
|
};
|
|
19
|
+
use crate::sql::collect_query_projection_column_names;
|
|
19
20
|
|
|
20
21
|
/// Catalog facts supplied at policy registration time (from any adapter snapshot).
|
|
21
22
|
#[derive(Debug, Default, Clone)]
|
|
@@ -389,6 +390,24 @@ fn validate_pgn_policy_parsed(
|
|
|
389
390
|
dimension_columns.insert(TableKey::new(alias), columns.clone());
|
|
390
391
|
dimension_columns.insert(TableKey::new(base), columns);
|
|
391
392
|
}
|
|
393
|
+
for (alias, query_sql) in dimension_queries {
|
|
394
|
+
let columns = collect_query_projection_column_names(query_sql)
|
|
395
|
+
.map_err(|err| {
|
|
396
|
+
RewriteError::catalog_with_context(
|
|
397
|
+
ErrorKind::UnknownColumn,
|
|
398
|
+
format!(
|
|
399
|
+
"Dimension subquery '{alias}' has invalid projection for catalog validation: {err}"
|
|
400
|
+
),
|
|
401
|
+
Some(alias.clone()),
|
|
402
|
+
None,
|
|
403
|
+
Some(constraint.to_string()),
|
|
404
|
+
Some("catalog_validation"),
|
|
405
|
+
)
|
|
406
|
+
})?
|
|
407
|
+
.into_iter()
|
|
408
|
+
.collect::<HashSet<_>>();
|
|
409
|
+
dimension_columns.insert(TableKey::new(alias), columns);
|
|
410
|
+
}
|
|
392
411
|
|
|
393
412
|
let source_names = sources
|
|
394
413
|
.iter()
|
|
@@ -495,6 +514,7 @@ fn validate_pgn_policy_parsed(
|
|
|
495
514
|
&table_key,
|
|
496
515
|
dimension_tables,
|
|
497
516
|
dimension_aliases,
|
|
517
|
+
dimension_queries,
|
|
498
518
|
&dimension_columns,
|
|
499
519
|
) {
|
|
500
520
|
if !columns.contains(&column_key) {
|
|
@@ -544,6 +564,7 @@ fn resolve_dimension_columns<'a>(
|
|
|
544
564
|
table_key: &TableKey,
|
|
545
565
|
dimension_tables: &[String],
|
|
546
566
|
dimension_aliases: &HashMap<String, String>,
|
|
567
|
+
dimension_queries: &HashMap<String, String>,
|
|
547
568
|
dimension_columns: &'a HashMap<TableKey, HashSet<String>>,
|
|
548
569
|
) -> Option<&'a HashSet<String>> {
|
|
549
570
|
if dimension_tables
|
|
@@ -552,7 +573,13 @@ fn resolve_dimension_columns<'a>(
|
|
|
552
573
|
{
|
|
553
574
|
return dimension_columns.get(table_key);
|
|
554
575
|
}
|
|
576
|
+
if dimension_queries.contains_key(table_key.as_str()) {
|
|
577
|
+
return dimension_columns.get(table_key);
|
|
578
|
+
}
|
|
555
579
|
if let Some(base) = dimension_aliases.get(table_key.as_str()) {
|
|
580
|
+
if dimension_queries.contains_key(base) {
|
|
581
|
+
return dimension_columns.get(table_key);
|
|
582
|
+
}
|
|
556
583
|
return dimension_columns.get(&TableKey::new(base));
|
|
557
584
|
}
|
|
558
585
|
dimension_columns.get(table_key)
|
|
@@ -1054,6 +1081,63 @@ mod tests {
|
|
|
1054
1081
|
.expect("dimension alias column should validate");
|
|
1055
1082
|
}
|
|
1056
1083
|
|
|
1084
|
+
#[test]
|
|
1085
|
+
fn validates_constraint_columns_through_dimension_subquery_alias() {
|
|
1086
|
+
let catalog = sample_catalog();
|
|
1087
|
+
let mut dimension_aliases = HashMap::new();
|
|
1088
|
+
dimension_aliases.insert("u".to_string(), "u".to_string());
|
|
1089
|
+
let mut dimension_queries = HashMap::new();
|
|
1090
|
+
dimension_queries.insert(
|
|
1091
|
+
"u".to_string(),
|
|
1092
|
+
"(SELECT user_id FROM session_user)".to_string(),
|
|
1093
|
+
);
|
|
1094
|
+
let policy = PolicyIr::Pgn {
|
|
1095
|
+
sources: vec!["foo".into()],
|
|
1096
|
+
required_sources: Vec::new(),
|
|
1097
|
+
dimension_tables: Vec::new(),
|
|
1098
|
+
dimension_aliases,
|
|
1099
|
+
dimension_queries,
|
|
1100
|
+
sink: None,
|
|
1101
|
+
sink_alias: None,
|
|
1102
|
+
source_aliases: HashMap::new(),
|
|
1103
|
+
constraint: "max(foo.id) > 1 AND u.user_id = 1".into(),
|
|
1104
|
+
on_fail: Resolution::Remove,
|
|
1105
|
+
description: None,
|
|
1106
|
+
};
|
|
1107
|
+
catalog
|
|
1108
|
+
.validate_policy(&policy, &sample_registry())
|
|
1109
|
+
.expect("dimension subquery alias column should validate");
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
#[test]
|
|
1113
|
+
fn rejects_unknown_dimension_subquery_column() {
|
|
1114
|
+
let catalog = sample_catalog();
|
|
1115
|
+
let mut dimension_aliases = HashMap::new();
|
|
1116
|
+
dimension_aliases.insert("u".to_string(), "u".to_string());
|
|
1117
|
+
let mut dimension_queries = HashMap::new();
|
|
1118
|
+
dimension_queries.insert(
|
|
1119
|
+
"u".to_string(),
|
|
1120
|
+
"(SELECT user_id FROM session_user)".to_string(),
|
|
1121
|
+
);
|
|
1122
|
+
let policy = PolicyIr::Pgn {
|
|
1123
|
+
sources: vec!["foo".into()],
|
|
1124
|
+
required_sources: Vec::new(),
|
|
1125
|
+
dimension_tables: Vec::new(),
|
|
1126
|
+
dimension_aliases,
|
|
1127
|
+
dimension_queries,
|
|
1128
|
+
sink: None,
|
|
1129
|
+
sink_alias: None,
|
|
1130
|
+
source_aliases: HashMap::new(),
|
|
1131
|
+
constraint: "max(foo.id) > 1 AND u.missing = 1".into(),
|
|
1132
|
+
on_fail: Resolution::Remove,
|
|
1133
|
+
description: None,
|
|
1134
|
+
};
|
|
1135
|
+
let err = catalog
|
|
1136
|
+
.validate_policy(&policy, &sample_registry())
|
|
1137
|
+
.unwrap_err();
|
|
1138
|
+
assert_eq!(err.kind(), ErrorKind::UnknownColumn);
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1057
1141
|
#[test]
|
|
1058
1142
|
fn rejects_unknown_dimension_column() {
|
|
1059
1143
|
let mut catalog = sample_catalog();
|
{data_flow_control-0.1.2 → data_flow_control-0.1.4}/passant-core/src/policy_store/compiled.rs
RENAMED
|
@@ -140,6 +140,7 @@ impl PolicyStore {
|
|
|
140
140
|
&compiled.ast,
|
|
141
141
|
policy.dimension_tables(),
|
|
142
142
|
policy.dimension_aliases(),
|
|
143
|
+
policy.dimension_queries(),
|
|
143
144
|
&source_key_set,
|
|
144
145
|
)
|
|
145
146
|
});
|
|
@@ -226,6 +227,7 @@ pub(crate) fn compile_branch_policy(
|
|
|
226
227
|
&constraint_ast,
|
|
227
228
|
policy.dimension_tables(),
|
|
228
229
|
policy.dimension_aliases(),
|
|
230
|
+
policy.dimension_queries(),
|
|
229
231
|
&source_key_set,
|
|
230
232
|
)
|
|
231
233
|
};
|
|
@@ -56,6 +56,7 @@ pub(crate) fn inject_policy_dimensions(
|
|
|
56
56
|
constraint,
|
|
57
57
|
dimension_tables,
|
|
58
58
|
dimension_aliases,
|
|
59
|
+
dimension_queries,
|
|
59
60
|
&source_keys,
|
|
60
61
|
)?
|
|
61
62
|
};
|
|
@@ -175,11 +176,9 @@ pub(crate) fn inject_policy_dimensions(
|
|
|
175
176
|
append_dimension_join(select, factor, join.on)?;
|
|
176
177
|
joined_keys.insert(table_key);
|
|
177
178
|
} else {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
another dimension in the policy constraint and catalog row count is not 1"
|
|
182
|
-
));
|
|
179
|
+
warnings.push(expansion_warning(alias));
|
|
180
|
+
append_dimension_join(select, factor, None)?;
|
|
181
|
+
joined_keys.insert(table_key);
|
|
183
182
|
}
|
|
184
183
|
}
|
|
185
184
|
|
|
@@ -405,9 +404,10 @@ pub(crate) fn compile_dimension_join_plan(
|
|
|
405
404
|
constraint_ast: &Expr,
|
|
406
405
|
dimension_tables: &[String],
|
|
407
406
|
dimension_aliases: &HashMap<String, String>,
|
|
407
|
+
dimension_queries: &HashMap<String, String>,
|
|
408
408
|
source_keys: &HashSet<TableKey>,
|
|
409
409
|
) -> Option<DimensionJoinPlan> {
|
|
410
|
-
if dimension_tables.is_empty() {
|
|
410
|
+
if dimension_tables.is_empty() && dimension_queries.is_empty() {
|
|
411
411
|
return None;
|
|
412
412
|
}
|
|
413
413
|
let mut dimension_keys = HashSet::new();
|
|
@@ -419,6 +419,9 @@ pub(crate) fn compile_dimension_join_plan(
|
|
|
419
419
|
}
|
|
420
420
|
}
|
|
421
421
|
}
|
|
422
|
+
for alias in dimension_queries.keys() {
|
|
423
|
+
dimension_keys.insert(TableKey::new(alias));
|
|
424
|
+
}
|
|
422
425
|
let mut source_conditions = HashMap::new();
|
|
423
426
|
let mut dimension_edges = Vec::new();
|
|
424
427
|
collect_dimension_join_graph(
|
|
@@ -454,17 +457,24 @@ fn dimension_join_graph(
|
|
|
454
457
|
constraint: &str,
|
|
455
458
|
dimension_tables: &[String],
|
|
456
459
|
dimension_aliases: &HashMap<String, String>,
|
|
460
|
+
dimension_queries: &HashMap<String, String>,
|
|
457
461
|
source_keys: &HashSet<TableKey>,
|
|
458
462
|
) -> Result<(HashMap<TableKey, Expr>, Vec<DimensionJoinEdge>), RewriteError> {
|
|
459
463
|
let constraint = preprocess_policy_constraint(constraint);
|
|
460
464
|
let expr = parse_projection_expr(&constraint).map_err(|err| {
|
|
461
465
|
RewriteError::unsupported_statement(format!("dimension join analysis: {err}"))
|
|
462
466
|
})?;
|
|
463
|
-
let plan = compile_dimension_join_plan(
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
467
|
+
let plan = compile_dimension_join_plan(
|
|
468
|
+
&expr,
|
|
469
|
+
dimension_tables,
|
|
470
|
+
dimension_aliases,
|
|
471
|
+
dimension_queries,
|
|
472
|
+
source_keys,
|
|
473
|
+
)
|
|
474
|
+
.unwrap_or(DimensionJoinPlan {
|
|
475
|
+
source_conditions: HashMap::new(),
|
|
476
|
+
dimension_edges: Vec::new(),
|
|
477
|
+
});
|
|
468
478
|
Ok((plan.source_conditions, plan.dimension_edges))
|
|
469
479
|
}
|
|
470
480
|
|