diff --git a/ibis-server/tests/routers/v3/connector/mssql/conftest.py b/ibis-server/tests/routers/v3/connector/mssql/conftest.py index 50e034b00..3718dd310 100644 --- a/ibis-server/tests/routers/v3/connector/mssql/conftest.py +++ b/ibis-server/tests/routers/v3/connector/mssql/conftest.py @@ -1,8 +1,13 @@ import pathlib +import pandas as pd import pytest +import sqlalchemy +from sqlalchemy import text from testcontainers.mssql import SqlServerContainer +from tests.conftest import file_path + pytestmark = pytest.mark.mssql base_url = "/v3/connector/mssql" @@ -20,6 +25,21 @@ def mssql(request) -> SqlServerContainer: mssql = SqlServerContainer( "mcr.microsoft.com/mssql/server:2019-CU27-ubuntu-20.04", dialect="mssql+pyodbc" ).start() + engine = sqlalchemy.create_engine( + f"{mssql.get_connection_url()}?driver=ODBC+Driver+18+for+SQL+Server&TrustServerCertificate=YES" + ) + pd.read_parquet(file_path("resource/tpch/data/orders.parquet")).to_sql( + "orders", engine, index=False + ) + with engine.begin() as conn: + conn.execute(text("CREATE TABLE unicode_test (id INT, letter NVARCHAR(10))")) + conn.execute( + text("INSERT INTO unicode_test (id, letter) VALUES (1, N'真夜中')") + ) + conn.execute( + text("INSERT INTO unicode_test (id, letter) VALUES (2, 'ZUTOMAYO')") + ) + request.addfinalizer(mssql.stop) return mssql diff --git a/ibis-server/tests/routers/v3/connector/mssql/test_query.py b/ibis-server/tests/routers/v3/connector/mssql/test_query.py new file mode 100644 index 000000000..3bd95ef51 --- /dev/null +++ b/ibis-server/tests/routers/v3/connector/mssql/test_query.py @@ -0,0 +1,65 @@ +import base64 + +import orjson +import pytest + +from app.dependencies import ( + X_WREN_FALLBACK_DISABLE, +) +from tests.routers.v3.connector.mssql.conftest import base_url + +manifest = { + "catalog": "wren", + "schema": "public", + "models": [ + { + "name": "unicode_test", + "tableReference": { + "schema": "dbo", + "table": "unicode_test", + }, + "columns": [ + {"name": "id", "type": "integer"}, + {"name": "letter", "type": "varchar"}, + ], + } + ], + "dataSource": "MSSQL", +} + + +@pytest.fixture(scope="module") +def manifest_str(): + return base64.b64encode(orjson.dumps(manifest)).decode("utf-8") + + +async def test_unicode_literal(client, manifest_str, connection_info): + response = await client.post( + url=f"{base_url}/query", + json={ + "connectionInfo": connection_info, + "manifestStr": manifest_str, + "sql": "SELECT id FROM wren.public.unicode_test WHERE letter = '真夜中'", + }, + headers={ + X_WREN_FALLBACK_DISABLE: "true", + }, + ) + assert response.status_code == 200 + result = response.json() + assert result["data"] == [[1]] + + response = await client.post( + url=f"{base_url}/query", + json={ + "connectionInfo": connection_info, + "manifestStr": manifest_str, + "sql": "SELECT id FROM wren.public.unicode_test WHERE letter = 'ZUTOMAYO'", + }, + headers={ + X_WREN_FALLBACK_DISABLE: "true", + }, + ) + assert response.status_code == 200 + result = response.json() + assert result["data"] == [[2]] diff --git a/wren-core-py/Cargo.lock b/wren-core-py/Cargo.lock index 8a524f2d8..9ec17f1d4 100644 --- a/wren-core-py/Cargo.lock +++ b/wren-core-py/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -61,12 +61,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -93,9 +87,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -277,7 +271,7 @@ dependencies = [ "arrow-schema", "chrono", "half", - "indexmap 2.10.0", + "indexmap 2.11.4", "lexical-core", "memchr", "num", @@ -398,9 +392,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -408,7 +402,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -432,9 +426,9 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.9.2" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "blake2" @@ -536,10 +530,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.33" +version = "1.2.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -553,11 +548,10 @@ checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "num-traits", "serde", @@ -582,9 +576,9 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comfy-table" -version = "7.1.4" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" +checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" dependencies = [ "unicode-segmentation", "unicode-width", @@ -685,9 +679,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ "darling_core", "darling_macro", @@ -695,9 +689,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", @@ -709,9 +703,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.11" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", "quote", @@ -735,7 +729,7 @@ dependencies = [ [[package]] name = "datafusion" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "arrow-ipc", @@ -789,7 +783,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -814,7 +808,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -836,7 +830,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -846,7 +840,7 @@ dependencies = [ "half", "hashbrown 0.14.5", "hex", - "indexmap 2.10.0", + "indexmap 2.11.4", "libc", "log", "object_store", @@ -861,7 +855,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "futures", "log", @@ -871,7 +865,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-compression", @@ -906,7 +900,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -930,7 +924,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -954,7 +948,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -986,12 +980,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" [[package]] name = "datafusion-execution" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "dashmap", @@ -1009,7 +1003,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -1020,7 +1014,7 @@ dependencies = [ "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr-common", - "indexmap 2.10.0", + "indexmap 2.11.4", "paste", "recursive", "serde_json", @@ -1030,11 +1024,11 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "datafusion-common", - "indexmap 2.10.0", + "indexmap 2.11.4", "itertools", "paste", ] @@ -1042,7 +1036,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "arrow-buffer", @@ -1070,7 +1064,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -1090,7 +1084,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -1102,7 +1096,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "arrow-ord", @@ -1123,7 +1117,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -1138,7 +1132,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "datafusion-common", @@ -1155,7 +1149,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -1164,7 +1158,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "datafusion-expr", "quote", @@ -1174,7 +1168,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "chrono", @@ -1182,7 +1176,7 @@ dependencies = [ "datafusion-expr", "datafusion-expr-common", "datafusion-physical-expr", - "indexmap 2.10.0", + "indexmap 2.11.4", "itertools", "log", "recursive", @@ -1193,7 +1187,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -1204,7 +1198,7 @@ dependencies = [ "datafusion-physical-expr-common", "half", "hashbrown 0.14.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "itertools", "log", "paste", @@ -1214,7 +1208,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -1227,7 +1221,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "datafusion-common", @@ -1246,7 +1240,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "ahash", "arrow", @@ -1264,7 +1258,7 @@ dependencies = [ "futures", "half", "hashbrown 0.14.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "itertools", "log", "parking_lot", @@ -1275,7 +1269,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "arrow-schema", @@ -1292,7 +1286,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "async-trait", @@ -1315,13 +1309,13 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "49.0.1" -source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#4f9bb6d92f99a041977c49573800a7f72a48a2d5" +source = "git+https://github.com/Canner/datafusion.git?branch=canner%2Fv49.0.1#50edc43a4c09a7e546fb04c6cea77d25e05a8152" dependencies = [ "arrow", "bigdecimal", "datafusion-common", "datafusion-expr", - "indexmap 2.10.0", + "indexmap 2.11.4", "log", "recursive", "regex", @@ -1330,12 +1324,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -1403,12 +1397,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.1", ] [[package]] @@ -1417,6 +1411,12 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "find-msvc-tools" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -1425,9 +1425,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flatbuffers" -version = "25.2.10" +version = "25.9.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1045398c1bfd89168b5fd3f1fc11f6e70b34f6f66300c87d44d3de849463abf1" +checksum = "09b6620799e7340ebd9968d2e0708eb82cf1971e9a16821e2091b6d6e475eed5" dependencies = [ "bitflags", "rustc_version", @@ -1592,14 +1592,14 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" @@ -1640,11 +1640,15 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", "foldhash", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heck" version = "0.5.0" @@ -1670,15 +1674,15 @@ dependencies = [ [[package]] name = "humantime" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1824,13 +1828,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -1847,9 +1852,9 @@ checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ "bitflags", "cfg-if", @@ -1903,9 +1908,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ "getrandom 0.3.3", "libc", @@ -1913,9 +1918,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -1923,9 +1928,9 @@ dependencies = [ [[package]] name = "lexical-core" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b765c31809609075565a70b4b71402281283aeda7ecaf4818ac14a7b2ade8958" +checksum = "7d8d125a277f807e55a77304455eb7b1cb52f2b18c143b60e766c120bd64a594" dependencies = [ "lexical-parse-float", "lexical-parse-integer", @@ -1936,53 +1941,46 @@ dependencies = [ [[package]] name = "lexical-parse-float" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de6f9cb01fb0b08060209a057c048fcbab8717b4c1ecd2eac66ebfe39a65b0f2" +checksum = "52a9f232fbd6f550bc0137dcb5f99ab674071ac2d690ac69704593cb4abbea56" dependencies = [ "lexical-parse-integer", "lexical-util", - "static_assertions", ] [[package]] name = "lexical-parse-integer" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72207aae22fc0a121ba7b6d479e42cbfea549af1479c3f3a4f12c70dd66df12e" +checksum = "9a7a039f8fb9c19c996cd7b2fcce303c1b2874fe1aca544edc85c4a5f8489b34" dependencies = [ "lexical-util", - "static_assertions", ] [[package]] name = "lexical-util" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a82e24bf537fd24c177ffbbdc6ebcc8d54732c35b50a3f28cc3f4e4c949a0b3" -dependencies = [ - "static_assertions", -] +checksum = "2604dd126bb14f13fb5d1bd6a66155079cb9fa655b37f875b3a742c705dbed17" [[package]] name = "lexical-write-float" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5afc668a27f460fb45a81a757b6bf2f43c2d7e30cb5a2dcd3abf294c78d62bd" +checksum = "50c438c87c013188d415fbabbb1dceb44249ab81664efbd31b14ae55dabb6361" dependencies = [ "lexical-util", "lexical-write-integer", - "static_assertions", ] [[package]] name = "lexical-write-integer" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629ddff1a914a836fb245616a7888b62903aae58fa771e1d83943035efa0f978" +checksum = "409851a618475d2d5796377cad353802345cba92c867d9fbcde9cf4eac4e14df" dependencies = [ "lexical-util", - "static_assertions", ] [[package]] @@ -1993,9 +1991,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "libm" @@ -2005,18 +2003,18 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libz-rs-sys" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" +checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" dependencies = [ "zlib-rs", ] [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -2036,9 +2034,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lz4_flex" @@ -2072,9 +2070,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memoffset" @@ -2187,18 +2185,18 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "object_store" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efc4f07659e11cd45a341cd24d71e683e3be65d9ff1f8150061678fe60437496" +checksum = "4c1be0c6c22ec0817cdc77d3842f721a17fd30ab6965001415b5402a74e6b740" dependencies = [ "async-trait", "bytes", @@ -2313,13 +2311,13 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "petgraph" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.4", "serde", ] @@ -2386,9 +2384,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2410,9 +2408,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ "toml_edit", ] @@ -2468,7 +2466,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f" dependencies = [ - "target-lexicon 0.13.2", + "target-lexicon 0.13.3", ] [[package]] @@ -2508,9 +2506,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -2581,18 +2579,18 @@ dependencies = [ [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", @@ -2601,9 +2599,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -2613,9 +2611,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -2624,9 +2622,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "relative-path" @@ -2695,15 +2693,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys 0.61.1", ] [[package]] @@ -2759,9 +2757,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "seq-macro" @@ -2771,18 +2769,28 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -2791,27 +2799,28 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_with" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.11.4", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -2823,9 +2832,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" dependencies = [ "darling", "proc-macro2", @@ -2932,12 +2941,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "strsim" version = "0.11.1" @@ -2980,37 +2983,37 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "target-lexicon" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" +checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" [[package]] name = "tempfile" -version = "3.21.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys 0.61.1", ] [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -3030,9 +3033,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -3045,15 +3048,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -3120,18 +3123,31 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.4", "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +dependencies = [ "winnow", ] @@ -3168,21 +3184,21 @@ dependencies = [ [[package]] name = "twox-hash" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-segmentation" @@ -3210,13 +3226,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.5" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec961601b32b6f5d14ae8dabd35ff2ff2e2c6cb4c0e6641845ff105abe96d958" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3233,9 +3250,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "getrandom 0.3.3", "js-sys", @@ -3266,30 +3283,40 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" dependencies = [ - "wit-bindgen-rt", + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -3301,9 +3328,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -3314,9 +3341,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3324,9 +3351,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -3337,18 +3364,18 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -3366,18 +3393,18 @@ dependencies = [ [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.1", ] [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" dependencies = [ "windows-implement", "windows-interface", @@ -3388,9 +3415,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" dependencies = [ "proc-macro2", "quote", @@ -3399,9 +3426,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" dependencies = [ "proc-macro2", "quote", @@ -3410,24 +3437,24 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" dependencies = [ "windows-link", ] @@ -3456,7 +3483,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.4", +] + +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link", ] [[package]] @@ -3477,9 +3513,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" dependencies = [ "windows-link", "windows_aarch64_gnullvm 0.53.0", @@ -3590,21 +3626,18 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wren-core" @@ -3707,18 +3740,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -3781,9 +3814,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" +checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" [[package]] name = "zstd" @@ -3805,9 +3838,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/wren-core/core/src/mdl/dialect/inner_dialect.rs b/wren-core/core/src/mdl/dialect/inner_dialect.rs index 584e27f69..dc4f87762 100644 --- a/wren-core/core/src/mdl/dialect/inner_dialect.rs +++ b/wren-core/core/src/mdl/dialect/inner_dialect.rs @@ -64,6 +64,10 @@ pub trait InnerDialect: Send + Sync { ) -> bool { true } + + fn to_unicode_string_literal(&self, _s: &str) -> Option { + None + } } /// [get_inner_dialect] returns the suitable InnerDialect for the given data source. @@ -72,6 +76,7 @@ pub fn get_inner_dialect(data_source: &DataSource) -> Box { DataSource::MySQL => Box::new(MySQLDialect {}), DataSource::BigQuery => Box::new(BigQueryDialect {}), DataSource::Oracle => Box::new(OracleDialect {}), + DataSource::MSSQL => Box::new(MsSqlDialect {}), _ => Box::new(GenericDialect {}), } } @@ -306,3 +311,17 @@ fn non_uppercase(sql: &str) -> bool { let uppsercase = sql.to_uppercase(); uppsercase != sql } + +pub struct MsSqlDialect {} + +impl InnerDialect for MsSqlDialect { + fn to_unicode_string_literal(&self, s: &str) -> Option { + if !s.is_ascii() { + Some(ast::Expr::value(ast::Value::NationalStringLiteral( + s.to_string(), + ))) + } else { + None + } + } +} diff --git a/wren-core/core/src/mdl/dialect/wren_dialect.rs b/wren-core/core/src/mdl/dialect/wren_dialect.rs index 43a0f98f9..c63077d0f 100644 --- a/wren-core/core/src/mdl/dialect/wren_dialect.rs +++ b/wren-core/core/src/mdl/dialect/wren_dialect.rs @@ -96,6 +96,10 @@ impl Dialect for WrenDialect { ) } } + + fn to_unicode_string_literal(&self, s: &str) -> Option { + self.inner_dialect.to_unicode_string_literal(s) + } } impl Default for WrenDialect { diff --git a/wren-core/core/src/mdl/mod.rs b/wren-core/core/src/mdl/mod.rs index a6d5864cd..32be72e2b 100644 --- a/wren-core/core/src/mdl/mod.rs +++ b/wren-core/core/src/mdl/mod.rs @@ -3609,6 +3609,40 @@ mod test { Ok(()) } + #[tokio::test] + async fn test_unicode_literal() -> Result<()> { + let ctx = SessionContext::new(); + + let manifest = ManifestBuilder::default().build(); + let properties = SessionPropertiesRef::default(); + let mdl = Arc::new(AnalyzedWrenMDL::analyze( + manifest, + Arc::clone(&properties), + Mode::Unparse, + )?); + let sql = "select 'ZUTOMAYO', '永遠是深夜有多好'"; + assert_snapshot!( + transform_sql_with_ctx(&ctx, Arc::clone(&mdl), &[], Arc::clone(&properties), sql).await?, + @"SELECT 'ZUTOMAYO', '永遠是深夜有多好'" + ); + + let manifest = ManifestBuilder::default() + .data_source(DataSource::MSSQL) + .build(); + let properties = SessionPropertiesRef::default(); + let mdl = Arc::new(AnalyzedWrenMDL::analyze( + manifest, + Arc::clone(&properties), + Mode::Unparse, + )?); + let sql = "select 'ZUTOMAYO', '永遠是深夜有多好'"; + assert_snapshot!( + transform_sql_with_ctx(&ctx, Arc::clone(&mdl), &[], Arc::clone(&properties), sql).await?, + @"SELECT 'ZUTOMAYO', N'永遠是深夜有多好'" + ); + Ok(()) + } + #[tokio::test] async fn test_compatible_type() -> Result<()> { let ctx = SessionContext::new();