From 86ba28a35582f16a3e1e47e03ae615bc3698882d Mon Sep 17 00:00:00 2001 From: Adam Ling Date: Mon, 8 Apr 2024 16:08:32 -0700 Subject: [PATCH] SNOW-1308650: revert breaking change and release a newer version (#1916) --- DESCRIPTION.md | 4 +++ src/snowflake/connector/pandas_tools.py | 15 ++++++------ src/snowflake/connector/version.py | 2 +- test/integ/pandas/test_pandas_tools.py | 30 ----------------------- tested_requirements/requirements_310.reqs | 4 +-- tested_requirements/requirements_311.reqs | 4 +-- tested_requirements/requirements_312.reqs | 4 +-- tested_requirements/requirements_38.reqs | 4 +-- tested_requirements/requirements_39.reqs | 4 +-- 9 files changed, 22 insertions(+), 49 deletions(-) diff --git a/DESCRIPTION.md b/DESCRIPTION.md index ec9aed20d..79032110c 100644 --- a/DESCRIPTION.md +++ b/DESCRIPTION.md @@ -8,6 +8,10 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne # Release Notes +- v3.8.1(April 09, 2024) + + - Reverted the change "Updated `write_pandas` to skip TABLE IF NOT EXISTS in truncate mode." introduced in v3.8.0 (yanked) as it's a breaking change. `write_pandas` will be fixed in the future in a non-breaking way. + - v3.8.0(April 04,2024) - Improved `externalbrowser` auth in containerized environments diff --git a/src/snowflake/connector/pandas_tools.py b/src/snowflake/connector/pandas_tools.py index 1e0a91e38..f197cfafa 100644 --- a/src/snowflake/connector/pandas_tools.py +++ b/src/snowflake/connector/pandas_tools.py @@ -393,14 +393,13 @@ def drop_object(name: str, object_type: str) -> None: quote_identifiers, ) - if auto_create_table: - create_table_sql = ( - f"CREATE {table_type.upper()} TABLE IF NOT EXISTS {target_table_location} " - f"({create_table_columns})" - f" /* Python:snowflake.connector.pandas_tools.write_pandas() */ " - ) - logger.debug(f"auto creating table with '{create_table_sql}'") - cursor.execute(create_table_sql, _is_internal=True) + create_table_sql = ( + f"CREATE {table_type.upper()} TABLE IF NOT EXISTS {target_table_location} " + f"({create_table_columns})" + f" /* Python:snowflake.connector.pandas_tools.write_pandas() */ " + ) + logger.debug(f"auto creating table with '{create_table_sql}'") + cursor.execute(create_table_sql, _is_internal=True) # need explicit casting when the underlying table schema is inferred parquet_columns = "$1:" + ",$1:".join( f"{quote}{snowflake_col}{quote}::{column_type_mapping[col]}" diff --git a/src/snowflake/connector/version.py b/src/snowflake/connector/version.py index cc5aa7cec..62fb40ffe 100644 --- a/src/snowflake/connector/version.py +++ b/src/snowflake/connector/version.py @@ -1,3 +1,3 @@ # Update this for the versions # Don't change the forth version number from None -VERSION = (3, 8, 0, None) +VERSION = (3, 8, 1, None) diff --git a/test/integ/pandas/test_pandas_tools.py b/test/integ/pandas/test_pandas_tools.py index 5f31433b8..897b0c969 100644 --- a/test/integ/pandas/test_pandas_tools.py +++ b/test/integ/pandas/test_pandas_tools.py @@ -115,7 +115,6 @@ def test_write_pandas_with_overwrite( f"({col_name} STRING, {col_points} INT, {col_id} INT AUTOINCREMENT)" ) - show_sql = f"SHOW TABLES LIKE '{random_table_name}'" # SHOW command like is case-insensitive select_sql = f"SELECT * FROM {table_name}" select_count_sql = f"SELECT count(*) FROM {table_name}" drop_sql = f"DROP TABLE IF EXISTS {table_name}" @@ -149,35 +148,6 @@ def test_write_pandas_with_overwrite( # Check number of rows assert result["COUNT(*)"] == 1 - # Truncate-only mode - if not auto_create_table: - # Capture the created_on timestamp of the target table before truncation - result = cnx.cursor(DictCursor).execute(show_sql).fetchone() - create_ts_before_trunc = result["created_on"] - - # This operation should only truncate the table - success, nchunks, nrows, _ = write_pandas( - cnx, - df2, - random_table_name, - quote_identifiers=quote_identifiers, - auto_create_table=auto_create_table, - overwrite=True, - index=index, - ) - - # Capture the created_on timestamp of the target table after truncation - result = cnx.cursor(DictCursor).execute(show_sql).fetchone() - create_ts_after_trunc = result["created_on"] - assert create_ts_before_trunc == create_ts_after_trunc - - # Check write_pandas output - assert success - assert nchunks == 1 - result = cnx.cursor(DictCursor).execute(select_count_sql).fetchone() - # Check number of rows - assert result["COUNT(*)"] == 1 - # Write dataframe with a different schema if auto_create_table: # Should drop table and SUCCEED because the new table will be created with new schema of df3 diff --git a/tested_requirements/requirements_310.reqs b/tested_requirements/requirements_310.reqs index 0252fd060..979b075c0 100644 --- a/tested_requirements/requirements_310.reqs +++ b/tested_requirements/requirements_310.reqs @@ -15,6 +15,6 @@ pytz==2024.1 requests==2.31.0 sortedcontainers==2.4.0 tomlkit==0.12.4 -typing_extensions==4.10.0 +typing_extensions==4.11.0 urllib3==2.2.1 -snowflake-connector-python==3.8.0 +snowflake-connector-python==3.8.1 diff --git a/tested_requirements/requirements_311.reqs b/tested_requirements/requirements_311.reqs index f671666af..1b7a98ac3 100644 --- a/tested_requirements/requirements_311.reqs +++ b/tested_requirements/requirements_311.reqs @@ -15,6 +15,6 @@ pytz==2024.1 requests==2.31.0 sortedcontainers==2.4.0 tomlkit==0.12.4 -typing_extensions==4.10.0 +typing_extensions==4.11.0 urllib3==2.2.1 -snowflake-connector-python==3.8.0 +snowflake-connector-python==3.8.1 diff --git a/tested_requirements/requirements_312.reqs b/tested_requirements/requirements_312.reqs index 8ca6547d3..83ea6148f 100644 --- a/tested_requirements/requirements_312.reqs +++ b/tested_requirements/requirements_312.reqs @@ -16,7 +16,7 @@ requests==2.31.0 setuptools==69.2.0 sortedcontainers==2.4.0 tomlkit==0.12.4 -typing_extensions==4.10.0 +typing_extensions==4.11.0 urllib3==2.2.1 wheel==0.43.0 -snowflake-connector-python==3.8.0 +snowflake-connector-python==3.8.1 diff --git a/tested_requirements/requirements_38.reqs b/tested_requirements/requirements_38.reqs index f87e0756b..e324ba59e 100644 --- a/tested_requirements/requirements_38.reqs +++ b/tested_requirements/requirements_38.reqs @@ -15,6 +15,6 @@ pytz==2024.1 requests==2.31.0 sortedcontainers==2.4.0 tomlkit==0.12.4 -typing_extensions==4.10.0 +typing_extensions==4.11.0 urllib3==1.26.18 -snowflake-connector-python==3.8.0 +snowflake-connector-python==3.8.1 diff --git a/tested_requirements/requirements_39.reqs b/tested_requirements/requirements_39.reqs index db5d15548..012d74499 100644 --- a/tested_requirements/requirements_39.reqs +++ b/tested_requirements/requirements_39.reqs @@ -15,6 +15,6 @@ pytz==2024.1 requests==2.31.0 sortedcontainers==2.4.0 tomlkit==0.12.4 -typing_extensions==4.10.0 +typing_extensions==4.11.0 urllib3==1.26.18 -snowflake-connector-python==3.8.0 +snowflake-connector-python==3.8.1