2023年の Snowflake Connector for Python リリースノート

この記事には、 Snowflake Connector for Python のリリースノートが含まれています。また、該当する場合は以下が含まれます。

  • 動作の変更

  • 新機能

  • 顧客向けバグ修正

Snowflake は、 Snowflake Connector for Python の更新にセマンティックバージョニングを使用します。

バージョン3.6.0(2023年12月7日)

新機能および更新

  • ベクトル型のサポートを追加しました。

  • private_key_file および private_key_file_pwd 接続パラメーターのサポートを追加しました。

  • 接続のマスタートークンの有効期限が切れているかどうかを追跡する新しい expired フラグを SnowflakeConnection クラスに追加しました。

  • urllib3バージョンピンを変更し、3.10以前のPythonバージョンにのみ影響するようになりました。

バグ修正

  • 日付形式が設定され、qmarkスタイルのバインディングが使用されている場合に日付の挿入が失敗するバグを修正しました。

バージョン3.5.0(2023年11月13日)

新機能および更新

  • Snowflake Connector for Python は、Apache Arrow-nanoarrowプロジェクトのみで構築されるようになりました。

    • ホイールサイズをおよそ 1MB、取り付けサイズをおよそ 5MB に縮小しました。

    • 特定のバージョンにおけるpyarrowへのハード依存を削除しました。

  • nanoarrowコンバーターをサポートするため、以下を廃止しました。

    • snowflake.connector.cursor.NanoarrowUsage クラス。

    • NANOARROW_USAGE 環境変数。

    • snowflake.connector.cursor.NANOARROW_USAGE モジュール変数。

バグ修正

  • なし。

バージョン3.4.1(2023年11月9日)

新機能および更新

  • 以下のライブラリを更新しました。

    • ベンダー urlib3 をバージョン1.26.18に更新しました。

    • ベンダー requests をバージョン2.31.0に更新しました。

バグ修正

  • なし。

バージョン3.4.0(2023年11月3日)

新機能および更新

  • write_pandas での use_logical_type のサポートを追加しました。

  • snowflake.connector.connectbackoff_policy 引数を追加し、失敗したリクエストの再試行間のバックオフポリシーを構成できるようにしました。 backoff_policies モジュールで利用可能な実装をご参照ください。

  • ソケットの読み込みと接続のタイムアウトを指定する snowflake.connector.connectsocket_timeout 引数を追加しました。

  • pycryptodomexとoscryptoの依存関係を削除しました。すべての接続は、すでに依存関係にあった暗号ライブラリを経由して OpenSSL を通過するようになりました。

バグ修正

  • login_timeoutnetwork_timeout の動作を修正しました。ログインとネットワークリクエストの再試行が、タイムアウト後に適切に停止されるようになりました。

  • ベンダー urllib の問題 urllib3/urllib3#1878 のバグを修正しました。

  • 80 GB を超えるファイルをS3にインジェストする際の問題を修正しました。

バージョン3.3.1(2023年10月18日)

新機能および更新

  • Windows以外のプラットフォームに対して、構成ファイルのファイル権限が不十分な場合のコマンド候補(chown または chmod)を追加しました。

バグ修正

  • 接続診断が証明書チェックを完了できない問題を修正しました。

  • C拡張がコンパイルされていない場合、arrow反復子が ImportError を引き起こす問題を修正しました。

バージョン3.3.0(2023年10月12日)

新機能および更新

  • 結果arrowデータ変換用にApache arrow-nanoarrowプロジェクトを更新しました。

  • nanoarrowコンバーターとarrowコンバーターを切り替えられるように NANOARROW_USAGE 環境変数を導入しました。有効な値:

    • FOLLOW_SESSION_PARAMETER、これはサーバーで構成されたコンバーターを使用します。

    • DISABLE_NANOARROW、これはarrowコンバーターを使用し、サーバーの設定を上書きします。

    • ENABLE_NANOARROW、これはnanoarrowコンバーターを使用し、サーバーの設定を上書きします。

  • 次のメンバーを含む snowflake.connector.cursor.NanoarrowUsage 列挙型を導入しました。

    • NanoarrowUsage.FOLLOW_SESSION_PARAMETER、これはサーバーで構成されたコンバーターを使用します。

    • NanoarrowUsage.DISABLE_NANOARROW、これはarrowコンバーターを使用し、サーバーの設定を上書きします。

    • NanoarrowUsage.ENABLE_NANOARROW、これはnanoarrowコンバーターを使用し、サーバーの設定を上書きします。

  • nanoarrowコンバーターとarrowコンバーターを切り替えられるように snowflake.connector.cursor.NANOARROW_USAGE モジュール変数を導入しました。これは snowflake.connector.cursor.NanoarrowUsage 列挙型と組み合わせて使用します。

注釈

新しく導入された環境変数、列挙型、モジュール変数は仮のものです。将来のリリースでは、arrowからnanoarrowへのデータ変換が完了した時点で削除される予定です。

バグ修正

  • なし。

バージョン3.2.1(2023年10月3日)

新機能および更新

  • 複数の接続を同時にインスタンス化する際のテレメトリーにスレッドセーフティを追加しました。

  • 認証コードの変更に対する堅牢性が改善しました。

  • urllib3 ライブラリから urllib3.contrib.pyopenssl の非推奨警告を削除しました。

  • platformdirs の依存関係をバージョン 2.6.0~3.9.0からバージョン2.6.0~4.0.0に更新しました。

バグ修正

  • AWSPrivateLinkOCSP の再試行で URL、ポート、パスが無視されるバグを修正しました。

バージョン3.2.0(2023年9月7日)

新機能および更新

  • snowflake.connector.config_manager モジュールで、 parser -> manager の名前変更をより一貫性のあるものにしました。

  • ConfigOptions のデフォルト値のサポートを追加しました。

  • config.toml ファイルに default_connection_name を追加しました。

バグ修正

  • なし。

バージョン3.1.1(2023年8月28日)

新機能および更新

  • 生バイトに加えて、 AuthByKeyPair を構築する際の RSAPublicKey のサポートを追加しました。

バグ修正

  • OKTA 認証がトークンをリフレッシュする再試行ロジックのバグを修正しました。

  • SOCKS5 プロキシ経由の接続時に SOCKSProxyManagerproxy_header 属性が欠落するバグを修正しました。

バージョン3.1.0(2023年7月31日)

新機能および更新

  • connections.toml 構成ファイルに接続定義を追加できる機能を追加しました。接続定義は、接続パラメーターのコレクションを参照します。たとえば、「prod」という名前の接続を定義する場合は、

    [prod]
    account = "my_account"
    user = "my_user"
    password = "my_password"
    
    Copy

    デフォルトでは、環境変数 SNOWFLAKE_HOME で指定された場所にある connections.toml ファイルを探します(デフォルト: ~/.snowflake)。このフォルダが存在しない場合、Pythonコネクタは以下のように platformdirs の場所でファイルを探します。

    • Linuxの場合: ~/.config/snowflake/。ただし、 XDG の設定に従います

    • Macの場合: ~/Library/Application Support/snowflake/

    • Windowsの場合: %USERPROFILE%\AppData\Local\snowflake\

    どのファイルが使用されているかは、以下のコマンドを実行すると確認できます。

    python -c "from snowflake.connector.constants import CONNECTIONS_FILE; print(str(CONNECTIONS_FILE))"
    
    Copy
  • 暗号の依存関係を<41.0.0,>=3.1.0から>=3.1.0,<42.0.0に変更しました。

  • OCSP 応答キャッシュを改善して、Windows上でtmpキャッシュファイルを削除できるようにしました。

  • OCSP 応答キャッシュを改善して、ディスク書き込み時間を短縮しました。

  • SnowflakeConnection でパラメーター server_session_keep_alive を追加して、クライアント接続の終了時にセッション削除をスキップするようにしました。

  • platformdirs のピン止めを強化して、新しいリリースがコネクタの新バージョンの互換性を損なわないようにしました。

  • type_mapperfetch_pandas_batches()fetch_pandas_all() に渡すことができるようになりました。

  • Okta認証の再試行ロジックを改善して、認証が制限された場合にトークンをリフレッシュするようにしました。

  • クライアントによって再試行されるクエリの再試行の理由を追加しました。

  • Python 3.7のサポートを削除しました。

  • 接続リセットエラーのエラー処理を改善しました。

バグ修正

  • SFPlatformDirs が、パスにアプリケーション名/バージョンが誤って付加されるバグを修正しました。

  • ターゲットスキーマでステージまたはファイル形式を作成する権限を持っていないユーザーが、現在のスキーマで正しい権限を持っている場合に、 write_pandas が失敗するバグを修正しました。

  • マルチスレッドシナリオでキャッシュのシリアル化中にセグメント違反が発生することがあった問題を回避しました。

  • PUT コマンド実行時に発生した仮ファイルの削除に関するバグを修正。

  • マルチスレッドシナリオでキャッシュのシリアル化中に pickle.dump がセグメンテーション違反になるバグを修正しました。

バージョン3.0.4(2023年5月25日)

新機能および更新

  • 結果の形式が JSON の場合、 JSON のコンテンツをutf-8で強制的にデコードするための json_result_force_utf8_decoding 接続パラメーターを追加しました。

  • ベンダーライブラリurllib3を1.26.15に更新しました。

  • ベンダーライブラリのリクエストを2.29.0に更新しました。

  • pandasの依存関係を<1.6.0,>=1.0.0から>=1.0.0,<2.1.0に変更しました。

  • ジオメトリ型のサポートを追加しました。

バグ修正

  • 複数ステートメントのクエリ実行時に cursor.execute() が引数 statement_params ディクショナリオブジェクトを変更できるバグを修正しました。

  • カーソルが非同期の複数ステートメントのクエリを実行している場合、最初のクエリの結果をフェッチする前に SnowflakeCursor.nextset を呼び出すことを妨げていたバグを修正しました。

  • execute_async() の結果を得る前に _prefetch_hook() が呼び出されなかった場合のバグを修正しました。

  • 一部の ResultMetadata フィールドがオプションであるにもかかわらず必須と表示されていたバグを修正しました。

  • 一括挿入で日付が正しく変換されないバグを修正しました。

バージョン3.0.3(2023年4月20日)

新機能および更新

  • ステージ上にファイルが存在し、ファイルのコンテンツが一致する場合は、ステージへのファイルアップロードをスキップできるパラメーターを追加しました。

  • SnowflakeCursor.execute メソッドの型ヒントを改良。

  • GET ログを改善し、同じ名前で複数のファイルをダウンロードした場合に警告を表示するようにしました。

バグ修正

  • GCS の GET コマンドでログにエラーが表示されるバグを修正しました。

  • ステージ上にファイルが存在し、ファイルのコンテンツが一致する場合は、ステージへのファイルアップロードをスキップできるパラメーターを追加しました。

  • snowflake.connector.pandas_tool.write_pandas で二重引用符を含む列名を使用してPandas DataFrame を記述する際に発生するバグを修正しました。

  • Pandas DataFrame にバイナリデータで snowflake.connector.pandas_tool.write_pandas を書き込む際に発生するバグを修正しました。

バージョン3.0.2(2023年3月23日)

新機能および更新

  • なし。

バグ修正

  • SnowflakeCursor.fetch_arrow_allSnowflakeCursor.fetchall の型ヒントが正しくないバグを修正しました。

  • エラー時にトークンをマスクするようにログを改善しました。

  • 行間にスペースがない場合に、 snowflake.connector.util_text.split_statements で最後の改行が消えてしまうバグを修正しました。

  • Cythonエクステンションのログモジュールにおけるメモリリークを修正しました。

  • 複数の部分からなるファイルをアップロードすると、 AWS の put コマンドで AttributeError が発生するバグを修正しました。

  • ファイルサイズが 200MB より大きいと、 AWS の put コマンドで AttributeError が発生するバグを修正しました。

バージョン3.0.1(2023年3月01日)

新機能および更新

  • OCSP 応答キャッシュの堅牢性を改善し、シリアル化と逆シリアル化でのエラーに対応できるようにしました。

  • setuptools への依存をパッケージに置き換えました。

  • async_executes メソッドのdoc-stringを更新しました。

  • エラーが発生した場合には、その原因となった SQL クエリを含むクエリフィールドが表示されるようになりました。

バグ修正

  • AuthByKeyPair.prepare を呼び出すと、 AuthByKeyPair.handle_timeout が位置引数ではなくキーワード引数を渡すバグを修正しました。

  • MFA トークンのキャッシュが再認証する代わりに、再起動するまで動作しないバグを修正しました。

バージョン3.0.0(2023年1月27日)

BCR (動作変更リリース)の変更

  • write_pandasが中間オブジェクトを作成する際に、ユーザー指定のスキーマやデータベースを使用しなかったバグを修正しました。

    以前は、write_pandas関数は現在使用されているデータベースとスキーマに仮オブジェクトを作成し、ユーザーが指定したデータベースとスキーマに(作成または追加された)最終テーブルを置くだけでした。このバージョンでは、 write_pandas のデータベースまたはスキーマパラメーターが現在選択されているものとは異なる場合、 write_pandas を実行するユーザーが、 write_pandas 関数によって参照されるスキーマを持つ仮ステージ、ファイル形式、およびテーブルを作成/削除するアクセス権を持っていることを確認する必要があります。

    Snowflakeは、新バージョンのドライバーを実稼働環境に展開する前に、実稼働前の環境でテストすることをお勧めします。この動作変更では、上記のシナリオ(つまり、現在のコンテキストとは異なるデータベースまたはスキーマパラメーターを持つ write_pandas)に特別な注意を払う必要があります。

新機能および更新

  • pyarrowの依存性を>=8.0.0,<8.1.0から>=10.0.1,<10.1.0に変更しました。

  • pyOpenSSL の依存関係を<23.0.0から<24.0.0に変更しました。

  • ブラウザーベースの認証時に、ブラウザーで開く前に SSO URLが表示されるようになりました。

  • ArrowResult がインポートできない場合のログレベルを増加しました。

  • C-extensionsのコンパイル時における MacOS の最小バージョンのチェックを追加しました。

バグ修正

  • write_pandas が、中間オブジェクトの作成にユーザー指定のスキーマとデータベースを使用しないバグを修正しました。

  • HTTP 応答コード429が再試行されないバグを修正しました。

  • MFA トークンのキャッシュが機能していなかったバグを修正しました。