From 060f686d7062a318c75fa040de2718c324a099f4 Mon Sep 17 00:00:00 2001 From: Adam Ling Date: Tue, 9 Jun 2026 15:16:04 -0700 Subject: [PATCH] deprecate disabling sql simplifer --- .../workflows/daily_modin_precommit_py310.yml | 76 ------------------ .github/workflows/daily_precommit.yml | 78 ------------------- CHANGELOG.md | 1 + src/snowflake/snowpark/_internal/utils.py | 12 +++ src/snowflake/snowpark/session.py | 5 ++ 5 files changed, 18 insertions(+), 154 deletions(-) diff --git a/.github/workflows/daily_modin_precommit_py310.yml b/.github/workflows/daily_modin_precommit_py310.yml index b7cc08cc33..38d691a783 100644 --- a/.github/workflows/daily_modin_precommit_py310.yml +++ b/.github/workflows/daily_modin_precommit_py310.yml @@ -254,82 +254,6 @@ jobs: .tox/.coverage .tox/coverage.xml - test-disable-sql-simplifier: # Will be removed after sql simplifier is stable and no option to opt out. - name: Test Disable SQL Simplifier modin-${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }} - needs: build - runs-on: ${{ matrix.os.image_name }} - strategy: - fail-fast: false - matrix: - os: - - image_name: windows-latest-64-cores - download_name: windows - python-version: ["3.10"] - cloud-provider: [azure] - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Set up uv - uses: astral-sh/setup-uv@v6 - with: - version: "latest" - - name: Display Python version - run: python -c "import sys; print(sys.version)" - - name: Decrypt parameters.py - shell: bash - run: .github/scripts/decrypt_parameters.sh - env: - PARAMETER_PASSWORD: ${{ secrets.PARAMETER_PASSWORD }} - CLOUD_PROVIDER: ${{ matrix.cloud-provider }} - - name: Install protoc - shell: bash - run: .github/scripts/install_protoc.sh - - name: Download wheel(s) - uses: actions/download-artifact@v4 - with: - name: wheel - path: dist - - name: Show wheels downloaded - run: ls -lh dist - shell: bash - - name: Upgrade setuptools, pip and wheel - run: uv pip install -U setuptools pip --system wheel - - name: Install tox - run: uv pip install tox --system - - if: ${{ contains('macos', matrix.os.download_name) }} - name: Run Snowpark pandas API doctests - run: python -m tox -e "py${PYTHON_VERSION}-doctest-snowparkpandasdoctest-modin-ci" - env: - PYTHON_VERSION: ${{ matrix.python-version }} - cloud_provider: ${{ matrix.cloud-provider }} - PYTEST_ADDOPTS: --color=yes --tb=short --disable_sql_simplifier - TOX_PARALLEL_NO_SPINNER: 1 - shell: bash - - name: Run Snowpark pandas API tests (excluding doctests) - run: python -m tox -e "py${PYTHON_VERSION/\./}-snowparkpandasdailynotdoctest-modin-ci" - env: - PYTHON_VERSION: ${{ matrix.python-version }} - cloud_provider: ${{ matrix.cloud-provider }} - PYTEST_ADDOPTS: --color=yes --tb=short --disable_sql_simplifier - TOX_PARALLEL_NO_SPINNER: 1 - shell: bash - - name: Combine coverages - run: python -m tox -e coverage --skip-missing-interpreters false - shell: bash - env: - SNOWFLAKE_IS_PYTHON_RUNTIME_TEST: 1 - - uses: actions/upload-artifact@v4 - with: - include-hidden-files: true - name: coverage_${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }}-disable-sql-simplifier - path: | - .tox/.coverage - .tox/coverage.xml - test-disable-cte-optimization: name: Test Disable CTE Optimization modin-${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }} needs: build diff --git a/.github/workflows/daily_precommit.yml b/.github/workflows/daily_precommit.yml index b9400e883f..0eccebaab2 100644 --- a/.github/workflows/daily_precommit.yml +++ b/.github/workflows/daily_precommit.yml @@ -270,84 +270,6 @@ jobs: .coverage coverage.xml - test-disable-sql-simplifier: # Will be removed after sql simplifier is stable and no option to opt out. - name: Test Disable SQL Simplifier py-${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }} - needs: build - runs-on: ${{ matrix.os.image_name }} - strategy: - fail-fast: false - matrix: - os: - - image_name: macos-latest - download_name: macos # it includes doctest - python-version: ["3.10", "3.11", "3.12"] - cloud-provider: [aws] - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Set up uv - uses: astral-sh/setup-uv@v6 - with: - version: "latest" - - name: Display Python version - run: python -c "import sys; print(sys.version)" - - name: Decrypt parameters.py - shell: bash - run: .github/scripts/decrypt_parameters.sh - env: - PARAMETER_PASSWORD: ${{ secrets.PARAMETER_PASSWORD }} - CLOUD_PROVIDER: ${{ matrix.cloud-provider }} - - name: Install protoc - shell: bash - run: .github/scripts/install_protoc.sh - - name: Download wheel(s) - uses: actions/download-artifact@v4 - with: - name: wheel - path: dist - - name: Show wheels downloaded - run: ls -lh dist - shell: bash - - name: Upgrade setuptools, pip and wheel - run: uv pip install -U setuptools pip wheel --system - - name: Install tox - run: uv pip install tox --system - - if: ${{ contains('macos', matrix.os.download_name) }} - name: Run doctests - run: python -m tox -e "py${PYTHON_VERSION}-doctest-notudf-ci" - env: - PYTHON_VERSION: ${{ matrix.python-version }} - cloud_provider: ${{ matrix.cloud-provider }} - PYTEST_ADDOPTS: --color=yes --tb=short --disable_sql_simplifier - TOX_PARALLEL_NO_SPINNER: 1 - shell: bash - - name: Run tests (excluding doctests) - run: python -m tox -e "py${PYTHON_VERSION/\./}-dailynotdoctest-ci" - env: - PYTHON_VERSION: ${{ matrix.python-version }} - cloud_provider: ${{ matrix.cloud-provider }} - PYTEST_ADDOPTS: --color=yes --tb=short --disable_sql_simplifier - TOX_PARALLEL_NO_SPINNER: 1 - SNOWPARK_PYTHON_API_TEST_BUCKET_PATH: ${{ secrets.SNOWPARK_PYTHON_API_TEST_BUCKET_PATH }} - SNOWPARK_PYTHON_API_S3_STORAGE_INTEGRATION: ${{ vars.SNOWPARK_PYTHON_API_S3_STORAGE_INTEGRATION }} - shell: bash - - name: Combine coverages - run: python -m tox -e coverage --skip-missing-interpreters false - shell: bash - env: - SNOWFLAKE_IS_PYTHON_RUNTIME_TEST: 1 - - uses: actions/upload-artifact@v4 - with: - include-hidden-files: true - name: coverage_${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }}-disable-sql-simplifier - path: | - .tox/.coverage - .tox/coverage.xml - test-no-pandas: name: Test when pandas is not installed py-${{ matrix.os.download_name }}-${{ matrix.python-version }}-${{ matrix.cloud-provider }} needs: build diff --git a/CHANGELOG.md b/CHANGELOG.md index 056c7dcc5d..d03ee0533b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ #### Improvements - Improved CTE optimization to deduplicate identical subtrees in self-joins, which were previously emitted as repeated subqueries. +- Added a warning when SQL simplifier is disabled (`session.sql_simplifier_enabled = False` or `PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER = False`). The code path with SQL simplifier disabled is no longer maintained; if you encounter issues, please reach out through [GitHub issues](https://github.com/snowflakedb/snowpark-python/issues) or Snowflake support. #### Deprecations diff --git a/src/snowflake/snowpark/_internal/utils.py b/src/snowflake/snowpark/_internal/utils.py index f57aa99d55..7b90ef3fa2 100644 --- a/src/snowflake/snowpark/_internal/utils.py +++ b/src/snowflake/snowpark/_internal/utils.py @@ -24,6 +24,7 @@ import threading import traceback import uuid +import warnings import zipfile from enum import Enum, IntEnum, auto, unique from functools import lru_cache, wraps @@ -454,6 +455,17 @@ def warn_session_config_update_in_multithreaded_mode(config: str) -> None: ) +def warn_sql_simplifier_disabled(stacklevel: int = 2) -> None: + warnings.warn( + "SQL simplifier is disabled (sql_simplifier_enabled=False). This code path " + "is no longer maintained. If you encounter issues, please reach out through " + "GitHub issues (https://github.com/snowflakedb/snowpark-python/issues) or " + "Snowflake support.", + UserWarning, + stacklevel=stacklevel, + ) + + def normalize_remote_file_or_dir(name: str) -> str: return normalize_path(name, is_local=False) diff --git a/src/snowflake/snowpark/session.py b/src/snowflake/snowpark/session.py index 39d051ef7d..cd5dc0e151 100644 --- a/src/snowflake/snowpark/session.py +++ b/src/snowflake/snowpark/session.py @@ -146,6 +146,7 @@ unwrap_stage_location_single_quote, validate_object_name, warn_session_config_update_in_multithreaded_mode, + warn_sql_simplifier_disabled, warning, zip_file_or_directory_to_stream, set_ast_state, @@ -659,6 +660,8 @@ def __init__( _PYTHON_SNOWPARK_USE_SQL_SIMPLIFIER_STRING, True ) ) + if not self._sql_simplifier_enabled: + warn_sql_simplifier_disabled(stacklevel=3) self._cte_optimization_enabled: bool = self.is_feature_enabled_for_version( _PYTHON_SNOWPARK_USE_CTE_OPTIMIZATION_VERSION ) @@ -1148,6 +1151,8 @@ def custom_package_usage_config(self) -> Dict: @sql_simplifier_enabled.setter def sql_simplifier_enabled(self, value: bool) -> None: warn_session_config_update_in_multithreaded_mode("sql_simplifier_enabled") + if not value and value != self._sql_simplifier_enabled: + warn_sql_simplifier_disabled() with self._lock: self._conn._telemetry_client.send_sql_simplifier_telemetry(