Drop-in Apache Spark replacement written in Rust, unifying batch processing, stream processing, and compute-intensive AI workloads.
This report presents the forensic synthetic code analysis of lakehq/sail, a Rust project with 3,278 GitHub stars. SynthScan v2.0 examined 545,418 lines of code across 2002 source files, recording 1561 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 3.6 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 1561 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-python-udf/src/python/spark.py | 73 | def _pandas_serializer_kwargs(config) -> dict[str, bool]: | CODE |
| LOW | crates/sail-python-udf/src/python/spark.py | 600 | def _python_values_to_arrow_array( | CODE |
| LOW | crates/sail-python-udf/src/python/spark.py | 625 | def _arrow_array_to_output_type(data, data_type: pa.DataType) -> pa.Array: | CODE |
| LOW | crates/sail-cli/src/python/spark_mcp_server.py | 48 | def override_default_logging_config(): | CODE |
| LOW | crates/sail-cli/src/python/spark_mcp_server.py | 58 | def configure_fastmcp_log_level(): | CODE |
| LOW | python/pysail/tests/conftest.py | 56 | def pytest_collection_modifyitems(config: pytest.Config, items: list[pytest.Item]) -> None: | CODE |
| LOW | python/pysail/tests/conftest.py | 80 | def configure_sail_environment(): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 31 | def test_flight_server_connectivity(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 37 | def test_flight_execute_simple_query(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 50 | def test_flight_multiple_columns(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 61 | def test_flight_error_handling(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 118 | def test_flight_string_operations(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 135 | def test_flight_numeric_operations(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 153 | def test_flight_create_temp_view(flight_connection): | CODE |
| LOW | python/pysail/tests/flight/test_flight.py | 197 | def test_flight_multiple_cursors(flight_connection): | CODE |
| LOW | python/pysail/tests/celeborn/test_lifecycle.py | 36 | def test_lifecycle_manager_registers_requests_slots_and_unregisters( | CODE |
| LOW | python/pysail/tests/celeborn/test_lifecycle.py | 46 | def test_lifecycle_manager_returns_registration_failure() -> None: | CODE |
| LOW | python/pysail/tests/celeborn/conftest.py | 186 | def replication_endpoint_resolver( | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 48 | def test_shuffle_client_registers_and_unregisters( | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 58 | def test_shuffle_client_pushes_and_reads_partition( | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 69 | def test_shuffle_client_commits_after_all_mappers_end( | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 82 | def test_shuffle_client_replicates_data( | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 105 | def test_shuffle_client_returns_registration_failure() -> None: | CODE |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 114 | def test_shuffle_client_stop_does_not_stop_lifecycle_manager( | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 95 | def test_schema_simple_string(spark): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 100 | def test_data_frame_operations(df): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 252 | def test_write_partitioned_parquet(spark, df, tmpdir): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 409 | def test_udf_binary_view_input(spark, tmp_path): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 425 | def test_sql_named_window_clause(spark, df_view): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 454 | def test_sql_dataframe_argument(spark): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_basic.py | 471 | def _assert_coalesce_string_date_ansi_error(df): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_basic.py | 478 | def test_coalesce_string_literal_and_date_default_ansi_enabled(spark): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_basic.py | 485 | def test_coalesce_string_literal_and_date_ansi_disabled(spark): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 501 | def test_coalesce_string_literal_and_date_ansi_enabled(spark): | CODE |
| LOW | python/pysail/tests/spark/test_basic.py | 525 | def test_large_plan_no_proto_recursion_limit(spark): | CODE |
| LOW | python/pysail/tests/spark/conftest.py | 191 | def pytest_collection_modifyitems(items: list[pytest.Item]) -> None: | CODE |
| LOW | python/pysail/tests/spark/test_clickbench.py | 154 | def test_clickbench_query_plan(spark, q, queries, snapshot): | CODE |
| LOW | python/pysail/tests/spark/test_tpcds.py | 36 | def test_derived_tpcds_query_result(spark, query, snapshot): | CODE |
| LOW | python/pysail/tests/spark/test_tpcds.py | 49 | def test_derived_tpcds_query_plan(spark, query, snapshot): | CODE |
| LOW | python/pysail/tests/spark/test_tpch.py | 32 | def test_derived_tpch_query_result(spark, query, snapshot): | CODE |
| LOW | python/pysail/tests/spark/test_tpch.py | 42 | def test_derived_tpch_query_plan(spark, query, snapshot): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_config.py | 15 | def test_warning_on_static_config_addition(monkeypatch): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_config.py | 23 | def test_warning_on_static_config_deletion(monkeypatch): | CODE |
| LOW⚡ | python/pysail/tests/spark/test_config.py | 30 | def test_warning_on_static_config_modification(monkeypatch): | CODE |
| LOW | …n/pysail/tests/spark/delta/test_delta_write_options.py | 8 | def test_delta_write_option_write_batch_size(spark, tmp_path): | CODE |
| LOW | …n/pysail/tests/spark/delta/test_delta_write_options.py | 38 | def test_delta_write_option_target_file_size(spark, tmp_path): | CODE |
| LOW | …n/pysail/tests/spark/delta/test_delta_write_options.py | 70 | def test_delta_write_options_combined(spark, tmp_path): | CODE |
| LOW | …n/pysail/tests/spark/delta/test_delta_write_options.py | 103 | def test_delta_write_options_with_partitioning(spark, tmp_path): | CODE |
| LOW | …l/tests/spark/delta/test_delta_merge_into_dataframe.py | 14 | def test_dataframe_merge_into_basic(spark, tmp_path): | CODE |
| LOW | …l/tests/spark/delta/test_delta_merge_into_dataframe.py | 43 | def test_dataframe_merge_into_insert_all_and_delete(spark, tmp_path): | CODE |
| LOW | …l/tests/spark/delta/test_delta_merge_into_dataframe.py | 79 | def test_merge_into_path_target_with_dataframe_source(spark, tmp_path): | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 9 | def _create_empty_generated_column_table(table_path: Path) -> None: | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 61 | def test_dataframewriter_path_append_computes_omitted_generated_column(spark, tmp_path): | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 83 | def test_dataframewriter_path_append_rejects_generated_column_mismatch(spark, tmp_path): | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 96 | def test_dataframewriter_path_overwrite_computes_omitted_generated_column(spark, tmp_path): | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 113 | def test_dataframewriter_path_overwrite_rejects_generated_column_mismatch(spark, tmp_path): | CODE |
| LOW | …sail/tests/spark/delta/test_delta_generated_columns.py | 126 | def test_dataframewriter_path_overwrite_schema_does_not_rewrite_old_generated_column(spark, tmp_path): | CODE |
| LOW | …n/pysail/tests/spark/delta/test_delta_metadata_only.py | 56 | def test_read_metadata_only_table_without_add_actions(spark, tmp_path: Path, read_mode: str): | CODE |
| LOW | …s/spark/delta/test_delta_column_mapping_rename_drop.py | 33 | def _mapping_physical_metadata(field_meta: dict) -> dict: | CODE |
| LOW | …s/spark/delta/test_delta_column_mapping_rename_drop.py | 43 | def test_column_mapping_rename_preserves_physical(spark, tmp_path: Path): | CODE |
| 887 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/sail-delta-lake/src/snapshot/mod.rs | 728 | // ── Capability token verification ───────────────────────────────────────── | COMMENT |
| MEDIUM | …sail-delta-lake/src/physical_plan/scan_by_adds_exec.rs | 343 | // ── Fast path: bulk scan for files without deletion vectors ────────── | COMMENT |
| MEDIUM | …sail-delta-lake/src/physical_plan/scan_by_adds_exec.rs | 355 | // ── DV path: per-file scan with row-index filtering ───────────────── | COMMENT |
| MEDIUM | crates/sail-delta-lake/src/deletion_vector/resolve.rs | 79 | // ── Z85 (base-85) encoding for UUIDs ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sail-delta-lake/src/schema/arrow_conversions.rs | 20 | // ── Delta → Arrow ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/sail-delta-lake/src/schema/arrow_conversions.rs | 139 | // ── Arrow → Delta ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 218 | /// ┌─────────┐ ┌─────────┐ ┌──────────────┐ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 219 | /// │ ┌─────┐ │ │ ┌─────┐ │ │ ┌──────────┐ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 221 | /// │ ├─────┤ │ │ ├─────┤ │ │ ├──────────┤ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 222 | /// │ │NULL │ │ │ │ Y │ │──────────▶│ │[NULL, Y] │ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 223 | /// │ ├─────┤ │ │ ├─────┤ │ │ ├──────────┤ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 225 | /// │ └─────┘ │ │ └─────┘ │ │ └──────────┘ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 226 | /// └─────────┘ └─────────┘ └──────────────┘ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 237 | /// ┌──────────────┐ ┌──────────────┐ ┌─────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 238 | /// │ ┌──────────┐ │ │ ┌──────────┐ │ │ ┌────────────────────────┐ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 240 | /// │ ├──────────┤ │ │ ├──────────┤ │ │ ├────────────────────────┤ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 241 | /// │ │[NULL, Y] │ │ │ │[Q, R, S] │ │───────▶│ │ [[NULL, Y], [Q, R, S]] │ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 242 | /// │ ├──────────┤ │ │ ├──────────┤ │ │ ├────────────────────────│ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 244 | /// │ └──────────┘ │ │ └──────────┘ │ │ └────────────────────────┘ │ | COMMENT |
| MEDIUM⚡ | crates/sail-function/src/scalar/array/spark_array.rs | 245 | /// └──────────────┘ └──────────────┘ └─────────────────────────────┘ | COMMENT |
| MEDIUM | python/pysail/tests/spark/datasource/test_parquet.py | 291 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/pysail/tests/spark/datasource/test_parquet.py | 297 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 53 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 55 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 190 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 192 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 219 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 221 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 638 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 640 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 918 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 920 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 1449 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_python.py | 1451 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 103 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 132 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 134 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 203 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 218 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 253 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 255 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | python/pysail/tests/spark/datasource/test_jdbc.py | 266 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/pysail/tests/spark/datasource/test_jdbc.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | python/pysail/tests/spark/datasource/test_jdbc.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-execution/src/driver/output.rs | 101 | break; | COMMENT |
| LOW | crates/sail-execution/src/driver/job_scheduler/core.rs | 101 | .and_then(|task| task.attempts.get(key.attempt)); | COMMENT |
| LOW | crates/sail-execution/src/driver/task_assigner/state.rs | 81 | /// | COMMENT |
| LOW | crates/sail-execution/src/driver/task_assigner/state.rs | 161 | COMMENT | |
| LOW | crates/sail-execution/src/driver/actor/handler.rs | 241 | .get_task_state(&key) | COMMENT |
| LOW | crates/sail-execution/src/job_graph/mod.rs | 141 | /// For each partition in the current stage, execute the same partition to fetch the input | COMMENT |
| LOW | crates/sail-execution/src/task/scheduling.rs | 1 | use crate::id::{TaskKey, WorkerId}; | COMMENT |
| LOW | crates/sail-physical-plan/src/barrier.rs | 1 | use std::sync::Arc; | COMMENT |
| LOW | crates/sail-plan/src/function/scalar/json.rs | 21 | /// `JsonPath::Index` respectively). | COMMENT |
| LOW | crates/sail-plan/src/function/scalar/math.rs | 41 | /// - right: If left is a numeric right must be numeric expression, or an INTERVAL otherwise. | COMMENT |
| LOW | crates/sail-plan/src/function/scalar/math.rs | 81 | }) | COMMENT |
| LOW | crates/sail-plan/src/function/scalar/math.rs | 261 | expr_fn::nullif(divisor, lit(0)) | COMMENT |
| LOW | crates/sail-plan/src/resolver/data_type.rs | 21 | COMMENT | |
| LOW | crates/sail-plan/src/resolver/command/write.rs | 41 | use sail_function::scalar::misc::raise_error::RaiseError; | COMMENT |
| LOW | crates/sail-plan/src/resolver/command/write.rs | 61 | /// If the target exists, return an error. | COMMENT |
| LOW | crates/sail-plan/src/resolver/command/write.rs | 81 | /// | COMMENT |
| LOW | crates/sail-plan/src/resolver/command/write.rs | 881 | .map(|(column, name)| col(column).alias(name)) | COMMENT |
| LOW | crates/sail-plan/src/resolver/command/write.rs | 1141 | /// | COMMENT |
| LOW | crates/sail-plan/src/resolver/query/pivoting.rs | 201 | /// Infer pivot values by collecting the distinct values of the pivot column | COMMENT |
| LOW | …/sail-data-source/src/formats/python/table_provider.rs | 21 | /// | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/stream.rs | 21 | /// # Timeout Limitations | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/stream.rs | 101 | /// Stream that reads RecordBatches from a Python datasource. | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/exec.rs | 1 | //! Execution plan for Python data source batch reads. | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/exec.rs | 41 | COMMENT | |
| LOW | crates/sail-data-source/src/formats/python/error.rs | 1 | //! Error types for Python data source operations. | COMMENT |
| LOW | …tes/sail-data-source/src/formats/python/arrow_utils.rs | 1 | //! Arrow conversion utilities for Python data sources. | COMMENT |
| LOW | …es/sail-data-source/src/formats/python/table_format.rs | 21 | use sail_common_datafusion::utils::items::ItemTaker; | COMMENT |
| LOW | …ates/sail-data-source/src/formats/python/write_exec.rs | 1 | //! Distributed write execution plan for Python data sources. | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/mod.rs | 1 | //! Python data source support for Sail. | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/executor.rs | 41 | } | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/executor.rs | 61 | pub struct WriterPlan { | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/executor.rs | 81 | /// | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/executor.rs | 161 | } | COMMENT |
| LOW | crates/sail-data-source/src/formats/python/filter.rs | 1 | //! Filter pushdown system for Python data sources. | COMMENT |
| LOW | …ates/sail-data-source/src/formats/python/datasource.rs | 21 | /// # Caching Strategy | COMMENT |
| LOW | …ates/sail-data-source/src/formats/python/datasource.rs | 121 | *cache = Some(ds.clone().unbind()); | COMMENT |
| LOW | crates/sail-data-source/src/formats/text/reader.rs | 121 | // [Credit]: https://github.com/apache/arrow-rs/blob/ebb6ede98b2b4d96a1a4f501a28ab42a3b937f73/arrow-csv/src/reader/mod.r | COMMENT |
| LOW | crates/sail-spark-connect/build.rs | 81 | version: String, | COMMENT |
| LOW | crates/sail-spark-connect/src/error.rs | 281 | } | COMMENT |
| LOW | crates/sail-pyarrow/src/lib.rs | 1 | // Licensed to the Apache Software Foundation (ASF) under one | COMMENT |
| LOW | crates/sail-pyarrow/src/lib.rs | 21 | //! | COMMENT |
| LOW | crates/sail-pyarrow/src/lib.rs | 41 | //! | `pyarrow.DataType` | [DataType] | | COMMENT |
| LOW | crates/sail-pyarrow/src/lib.rs | 481 | /// This could be used in circumstances where you either want to consume a `pyarrow.Table` directly | COMMENT |
| LOW | crates/sail-delta-lake/Cargo.toml | 1 | # Licensed under the Apache License, Version 2.0 (the "License"); | COMMENT |
| LOW | crates/sail-delta-lake/src/lib.rs | 1 | // Licensed under the Apache License, Version 2.0 (the "License"); | COMMENT |
| LOW | crates/sail-delta-lake/src/options.rs | 1 | // Licensed under the Apache License, Version 2.0 (the "License"); | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/actions.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/pruning.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/expressions.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/mod.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/mod.rs | 81 | pub struct DeltaScanConfigBuilder { | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/schema.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/datasource/scan.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/protocol.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/mod.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/mod.rs | 981 | } | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/mod.rs | 1001 | // self.create_checkpoint = create_checkpoint; | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/mod.rs | 1081 | // pub fn with_app_metadata(mut self, app_metadata: HashMap<String, Value>) -> Self { | COMMENT |
| LOW | crates/sail-delta-lake/src/transaction/mod.rs | 1101 | // self | COMMENT |
| LOW | …es/sail-delta-lake/src/transaction/conflict_checker.rs | 1 | // https://github.com/delta-io/delta-rs/blob/5575ad16bf641420404611d65f4ad7626e9acb16/LICENSE.txt | COMMENT |
| 245 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | crates/sail-spark-connect/data/config/spark-3.5.json | 1081 | "doc": "When set to true, user is allowed to use org.apache.spark.sql.functions.udf(f: AnyRef, dataType: DataType) | CODE |
| CRITICAL | crates/sail-session/src/runtime.rs | 74 | let paths = self.config.runtime.temporary_files.paths.as_slice(); | CODE |
| CRITICAL | crates/sail-session/src/session_factory/server.rs | 121 | self.config.execution.checkpoint.path.clone(), | CODE |
| CRITICAL | …spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py | 145 | hive_conf = jvm.org.apache.hadoop.hive.conf.HiveConf() | CODE |
| CRITICAL | …spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py | 147 | client = jvm.org.apache.hadoop.hive.metastore.HiveMetaStoreClient(hive_conf) | CODE |
| CRITICAL | …tests/spark/catalog/hms/test_iceberg_catalog_commit.py | 39 | hive_conf = jvm.org.apache.hadoop.hive.conf.HiveConf() | CODE |
| CRITICAL | …tests/spark/catalog/hms/test_iceberg_catalog_commit.py | 41 | client = jvm.org.apache.hadoop.hive.metastore.HiveMetaStoreClient(hive_conf) | CODE |
| CRITICAL | scripts/spark-config/generate.py | 58 | clazz = spark._jvm.java.lang.Class.forName("org.apache.spark.sql.internal.SQLConf$") | CODE |
| CRITICAL | scripts/spark-config/generate.py | 64 | spark._jvm.org.apache.spark.util.Utils.classForName("org.apache.spark.sql.connect.config.Connect$", True, False) | CODE |
| CRITICAL | .github/actions/commit-workflow/action.yml | 35 | const workflows = await github.paginate(github.rest.actions.listWorkflowRunsForRepo.endpoint.merge({ | CODE |
| CRITICAL | .github/actions/commit-workflow/action.yml | 43 | const artifacts = await github.paginate(github.rest.actions.listWorkflowRunArtifacts.endpoint.merge({ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-python-udf/src/python/spark.py | 1 | CODE | |
| LOW | python/pysail/flight/__init__.py | 1 | CODE | |
| LOW | python/pysail/tests/celeborn/test_lifecycle.py | 3 | CODE | |
| LOW | python/pysail/tests/celeborn/conftest.py | 3 | CODE | |
| LOW | python/pysail/tests/celeborn/test_shuffle.py | 3 | CODE | |
| LOW | python/pysail/tests/spark/conftest.py | 1 | CODE | |
| LOW | python/pysail/tests/spark/delta/conftest.py | 1 | CODE | |
| LOW | …n/pysail/tests/spark/delta/test_delta_metadata_only.py | 1 | CODE | |
| LOW | …s/spark/delta/test_delta_column_mapping_rename_drop.py | 1 | CODE | |
| LOW | …s/spark/delta/test_delta_column_mapping_delta_spark.py | 3 | CODE | |
| LOW | python/pysail/tests/spark/delta/test_delta_variant.py | 1 | CODE | |
| LOW | …n/pysail/tests/spark/delta/test_delta_user_metadata.py | 1 | CODE | |
| LOW | …/pysail/tests/spark/delta/test_delta_column_mapping.py | 1 | CODE | |
| LOW | …thon/pysail/tests/spark/delta/test_delta_checkpoint.py | 1 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_jdbc.py | 7 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_vortex.py | 7 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_vortex.py | 13 | CODE | |
| LOW | python/pysail/tests/spark/optimizer/test_features.py | 1 | CODE | |
| LOW | …ts/spark/catalog/unity/test_managed_delta_dataframe.py | 4 | CODE | |
| LOW | python/pysail/tests/spark/catalog/unity/conftest.py | 6 | CODE | |
| LOW | python/pysail/tests/spark/catalog/glue/conftest.py | 3 | CODE | |
| LOW | …pysail/tests/spark/catalog/glue/test_iceberg_commit.py | 4 | CODE | |
| LOW | …n/pysail/tests/spark/catalog/glue/test_delta_commit.py | 4 | CODE | |
| LOW | …on/pysail/tests/spark/catalog/iceberg_rest/conftest.py | 7 | CODE | |
| LOW | …log/iceberg_rest/test_namespace_separator_incorrect.py | 1 | CODE | |
| LOW | …tests/spark/catalog/iceberg_rest/test_view_metadata.py | 1 | CODE | |
| LOW | …il/tests/spark/catalog/iceberg_rest/test_sort_order.py | 1 | CODE | |
| LOW | …pysail/tests/spark/catalog/iceberg_rest/test_nessie.py | 3 | CODE | |
| LOW | …atalog/iceberg_rest/test_namespace_separator_custom.py | 1 | CODE | |
| LOW | …il/tests/spark/catalog/iceberg_rest/test_lakekeeper.py | 1 | CODE | |
| LOW | …pysail/tests/spark/catalog/iceberg_rest/test_commit.py | 1 | CODE | |
| LOW | python/pysail/tests/spark/catalog/hms/conftest.py | 4 | CODE | |
| LOW | …ests/spark/catalog/hms/test_spark_to_sail_roundtrip.py | 8 | CODE | |
| LOW | …spark/catalog/hms/test_spark_to_sail_dsv2_roundtrip.py | 12 | CODE | |
| LOW | python/pysail/tests/spark/catalog/hms/test_hms_smoke.py | 4 | CODE | |
| LOW | …ysail/tests/spark/catalog/hms/test_hms_s3_roundtrip.py | 4 | CODE | |
| LOW | …ests/spark/catalog/hms/test_sail_to_spark_roundtrip.py | 8 | CODE | |
| LOW | …tests/spark/catalog/hms/test_iceberg_catalog_commit.py | 4 | CODE | |
| LOW | …n/pysail/tests/spark/execution/test_shuffle_storage.py | 1 | CODE | |
| LOW | python/pysail/docs/conf.py | 2 | CODE | |
| LOW | python/pysail/testing/snapshot/yaml.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/session.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/utils/jvm.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/steps/plan.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/steps/files.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/steps/iceberg.py | 3 | CODE | |
| LOW | python/pysail/testing/spark/steps/delta.py | 1 | CODE | |
| LOW | python/pysail/testing/spark/steps/sql.py | 1 | CODE | |
| LOW | python/pysail/examples/spark/convert_to_delta.py | 1 | CODE | |
| LOW | python/pysail/examples/spark/tpch.py | 1 | CODE | |
| LOW | python/pysail/spark/__init__.py | 1 | CODE | |
| LOW | python/pysail/spark/datasource/vortex.py | 18 | CODE | |
| LOW | python/pysail/spark/datasource/jdbc.py | 11 | CODE | |
| LOW | python/pysail/spark/utils/_function_scanner.py | 7 | CODE | |
| LOW | scripts/spark-tests/plugins/ibis.py | 1 | CODE | |
| LOW | scripts/spark-tests/plugins/spark.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-python-udf/src/python/spark.py | 938 | CODE | |
| LOW | crates/sail-python-udf/src/python/spark.py | 1270 | CODE | |
| LOW | python/pysail/tests/spark/conftest.py | 191 | CODE | |
| LOW | python/pysail/tests/spark/delta/test_delta_variant.py | 131 | CODE | |
| LOW | …sail/tests/spark/delta/test_delta_partition_pruning.py | 205 | CODE | |
| LOW | …sail/tests/spark/delta/test_delta_partition_pruning.py | 378 | CODE | |
| LOW | …sail/tests/spark/delta/test_delta_partition_pruning.py | 483 | CODE | |
| LOW | …/pysail/tests/spark/delta/test_delta_column_mapping.py | 19 | CODE | |
| LOW | …/pysail/tests/spark/delta/test_delta_column_mapping.py | 39 | CODE | |
| LOW | …/pysail/tests/spark/delta/test_delta_column_mapping.py | 572 | CODE | |
| LOW | …pysail/tests/spark/delta/test_delta_schema_handling.py | 38 | CODE | |
| LOW | …thon/pysail/tests/spark/delta/test_delta_concurrent.py | 10 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_python.py | 643 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_python.py | 118 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_python.py | 687 | CODE | |
| LOW | python/pysail/tests/spark/datasource/test_socket.py | 51 | CODE | |
| LOW | …pysail/tests/spark/catalog/iceberg_rest/test_commit.py | 629 | CODE | |
| LOW | …hon/pysail/tests/spark/iceberg/test_iceberg_pruning.py | 134 | CODE | |
| LOW | …hon/pysail/tests/spark/iceberg/test_iceberg_pruning.py | 171 | CODE | |
| LOW | python/pysail/testing/snapshot/yaml.py | 170 | CODE | |
| LOW | python/pysail/testing/spark/utils/files.py | 33 | CODE | |
| LOW | python/pysail/testing/spark/utils/files.py | 37 | CODE | |
| LOW | python/pysail/testing/spark/steps/plan.py | 13 | CODE | |
| LOW | python/pysail/testing/spark/steps/plan.py | 150 | CODE | |
| LOW | python/pysail/testing/spark/steps/iceberg.py | 503 | CODE | |
| LOW | python/pysail/testing/spark/steps/delta.py | 233 | CODE | |
| LOW | python/pysail/testing/spark/steps/delta.py | 504 | CODE | |
| LOW | python/pysail/testing/spark/steps/delta.py | 544 | CODE | |
| LOW | python/pysail/testing/spark/steps/delta.py | 602 | CODE | |
| LOW | python/pysail/examples/spark/tpch.py | 106 | CODE | |
| LOW | python/pysail/examples/spark/tpch.py | 29 | CODE | |
| LOW | python/pysail/examples/spark/tpch.py | 64 | CODE | |
| LOW | python/pysail/examples/spark/tpch.py | 86 | CODE | |
| LOW | python/pysail/spark/datasource/jdbc.py | 495 | CODE | |
| LOW | python/pysail/spark/utils/_function_scanner.py | 72 | CODE | |
| LOW | scripts/common-gold-data/count_missing_functions.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/sail-catalog-hms/tests/failover_tests.rs | 10 | #[ignore = "requires the HMS testcontainers harness"] | COMMENT |
| MEDIUM | …s/sail-catalog-hms/tests/kerberos_integration_tests.rs | 15 | #[ignore = "requires the Kerberos HMS testcontainers harness"] | COMMENT |
| MEDIUM | …s/sail-catalog-hms/tests/kerberos_integration_tests.rs | 25 | #[ignore = "subprocess helper for the Kerberos HMS testcontainers harness"] | COMMENT |
| MEDIUM | …s/sail-catalog-hms/tests/kerberos_integration_tests.rs | 87 | #[ignore = "requires the Kerberos HMS testcontainers harness"] | COMMENT |
| MEDIUM | …s/sail-catalog-hms/tests/kerberos_integration_tests.rs | 97 | #[ignore = "subprocess helper for the Kerberos HMS testcontainers harness"] | COMMENT |
| MEDIUM | crates/sail-iceberg/src/datasource/pruning.rs | 33 | // TODO: Implement robust logical expression parsing for summary pruning | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-data-source/src/formats/python/discovery.py | 24 | except Exception: # noqa: BLE001 | CODE |
| LOW | …thon/pysail/tests/spark/delta/test_delta_concurrent.py | 28 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | …thon/pysail/tests/spark/delta/test_delta_concurrent.py | 80 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | …thon/pysail/tests/spark/delta/test_delta_concurrent.py | 114 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | python/pysail/tests/spark/datasource/test_python.py | 539 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | python/pysail/tests/spark/catalog/unity/conftest.py | 99 | except Exception: | CODE |
| LOW | …on/pysail/tests/spark/catalog/iceberg_rest/conftest.py | 102 | except Exception: | CODE |
| LOW | python/pysail/tests/spark/catalog/hms/conftest.py | 144 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW⚡ | python/pysail/tests/spark/catalog/hms/conftest.py | 476 | except Exception: # noqa: BLE001 | CODE |
| LOW | python/pysail/tests/spark/iceberg/utils.py | 51 | except Exception: # noqa: S110, BLE001 | CODE |
| LOW | python/pysail/testing/spark/steps/delta.py | 218 | except Exception as e: | CODE |
| LOW | python/pysail/testing/spark/steps/sql.py | 82 | except Exception: # noqa: BLE001 | CODE |
| LOW⚡ | python/pysail/spark/datasource/vortex.py | 199 | except Exception as e: | CODE |
| LOW | python/pysail/spark/datasource/vortex.py | 256 | except Exception as e: | CODE |
| LOW⚡ | python/pysail/spark/datasource/jdbc.py | 245 | except Exception as e: | CODE |
| LOW | python/pysail/spark/datasource/jdbc.py | 445 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | python/pysail/tests/flight/test_flight.py | 157 | # Create a temp view | COMMENT |
| MEDIUM | python/pysail/tests/spark/test_clickbench.py | 124 | # Create an empty dataset with the ClickBench schema. | COMMENT |
| MEDIUM | …thon/pysail/tests/spark/delta/test_delta_concurrent.py | 97 | # Create the table first with a single write (version 0). | COMMENT |
| MEDIUM | scripts/spark-tests/run-tests.sh | 21 | # Define a few environment variables if they are not set. | COMMENT |
| MEDIUM | scripts/spark-tests/run-tests.sh | 40 | # Define the directory for test logs. The `tmp/` directory is in `.gitignore`. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-data-source/src/formats/python/discovery.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | crates/sail-cli/src/python/spark_mcp_server.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/pysail/__init__.py | 7 | __all__ = ["__version__"] | CODE |
| LOW | python/pysail/flight/__init__.py | 5 | __all__ = [ | CODE |
| LOW⚡ | python/pysail/tests/spark/datasource/test_python.py | 47 | def _update_test_state(path: str, **updates: Any) -> None: | CODE |
| LOW | …pysail/tests/spark/catalog/glue/test_iceberg_commit.py | 37 | def _update_glue_parameters(moto_endpoint: str, database: str, table: str, parameters: dict[str, str]) -> None: | CODE |
| LOW | python/pysail/examples/spark/compatibility_check.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | python/pysail/spark/__init__.py | 5 | __all__ = [ | CODE |
| LOW | python/pysail/spark/utils/_function_scanner.py | 20 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/sail-python-udf/src/python/spark.py | 251 | """Converts data to string where the behavior is similar to the Java `Object.toString()` method.""" | STRING |
| HIGH | python/pysail/tests/spark/catalog/hms/conftest.py | 562 | return value.toString() if hasattr(value, "toString") else str(value) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 708 | // Step 1: Write add/remove actions into a sidecar file using batched writes. | COMMENT |
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 751 | // Step 2: Build the main V2 checkpoint with header actions + sidecar refs. | COMMENT |
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 811 | // Step 3: Write _last_checkpoint hint pointing to the UUID-named checkpoint. | COMMENT |
| LOW | crates/sail-delta-lake/src/delta_log/cleanup.rs | 289 | // Step 1: Collect all sidecar paths referenced by remaining checkpoints. | COMMENT |
| LOW | crates/sail-delta-lake/src/delta_log/cleanup.rs | 331 | // Step 2: List all files in _sidecars/ and delete orphans older than 24 hours. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 708 | // Step 1: Write add/remove actions into a sidecar file using batched writes. | COMMENT |
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 751 | // Step 2: Build the main V2 checkpoint with header actions + sidecar refs. | COMMENT |
| LOW | crates/sail-delta-lake/src/checkpoint/mod.rs | 811 | // Step 3: Write _last_checkpoint hint pointing to the UUID-named checkpoint. | COMMENT |
| LOW | crates/sail-delta-lake/src/delta_log/cleanup.rs | 289 | // Step 1: Collect all sidecar paths referenced by remaining checkpoints. | COMMENT |
| LOW | crates/sail-delta-lake/src/delta_log/cleanup.rs | 331 | // Step 2: List all files in _sidecars/ and delete orphans older than 24 hours. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-sql-analyzer/src/statement.rs | 2168 | // TODO: implement the conversion properly for column-level ALTER TABLE operations | COMMENT |
| LOW | crates/sail-sql-analyzer/src/statement.rs | 2170 | // TODO: implement the conversion properly | COMMENT |
| LOW | crates/sail-python/src/globals.rs | 21 | // TODO: implement a systematic way to manage static config | COMMENT |
| LOW | crates/sail-function/src/scalar/map/utils.rs | 195 | // TODO: implement configuration and logic for spark.sql.mapKeyDedupPolicy=EXCEPTION (this is de | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/guide/integrations/langchain.md | 120 | export OPENAI_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/guide/integrations/mcp-server.md | 58 | Please note that there is no guardrail right now to prevent Claude from generating SQL statements that will alter your d | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/sail-plan/data/functions/scalar/misc.yaml | 284 | > SELECT from_protobuf(s, 'Person', '/path/to/descriptor.desc', map()) IS NULL AS result FROM (SELECT NAMED_ST | CODE |
| LOW | …l-spark-connect/tests/gold_data/function/protobuf.json | 5 | "query": "SELECT from_protobuf(s, 'Person', '/path/to/descriptor.desc', map()) IS NULL AS result FROM (SELECT NA | CODE |