arrowsql 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- arrowsql-0.1.0/.cargo/config.toml +7 -0
- arrowsql-0.1.0/.gitattributes +6 -0
- arrowsql-0.1.0/.gitignore +15 -0
- arrowsql-0.1.0/CHANGELOG.md +83 -0
- arrowsql-0.1.0/CONTRIBUTING.md +45 -0
- arrowsql-0.1.0/Cargo.lock +1874 -0
- arrowsql-0.1.0/Cargo.toml +99 -0
- arrowsql-0.1.0/LICENSE +21 -0
- arrowsql-0.1.0/LICENSE.upstream-mssql-python +47 -0
- arrowsql-0.1.0/PKG-INFO +146 -0
- arrowsql-0.1.0/README.md +104 -0
- arrowsql-0.1.0/docs/AGENT_MODE.md +52 -0
- arrowsql-0.1.0/docs/ARCHITECTURE.md +344 -0
- arrowsql-0.1.0/docs/ARROW_ODBC_RESEARCH.md +333 -0
- arrowsql-0.1.0/docs/ARROW_PLAN.md +78 -0
- arrowsql-0.1.0/docs/ASYNC.md +212 -0
- arrowsql-0.1.0/docs/BENCHMARK_SUMMARY.md +74 -0
- arrowsql-0.1.0/docs/CONTRACT.md +87 -0
- arrowsql-0.1.0/docs/EXPORT_RESEARCH.md +294 -0
- arrowsql-0.1.0/docs/FEATURES.md +68 -0
- arrowsql-0.1.0/docs/FREE_THREADED.md +111 -0
- arrowsql-0.1.0/docs/PACKAGING.md +356 -0
- arrowsql-0.1.0/docs/PERFORMANCE_RESEARCH.md +357 -0
- arrowsql-0.1.0/docs/PLATFORMS_AND_CONNECTION.md +65 -0
- arrowsql-0.1.0/docs/PYTHON_LAYER_CHANGES.md +322 -0
- arrowsql-0.1.0/docs/ROADMAP.md +58 -0
- arrowsql-0.1.0/docs/TEST_SCOPE.md +37 -0
- arrowsql-0.1.0/docs/UPSTREAM_BUGS_FOUND.md +95 -0
- arrowsql-0.1.0/docs/UPSTREAM_ISSUES.md +87 -0
- arrowsql-0.1.0/docs/assets/icon.svg +1 -0
- arrowsql-0.1.0/docs/assets/logo-dark-static.svg +1 -0
- arrowsql-0.1.0/docs/assets/logo-dark.svg +10 -0
- arrowsql-0.1.0/docs/assets/logo-static.svg +1 -0
- arrowsql-0.1.0/docs/assets/logo.svg +10 -0
- arrowsql-0.1.0/examples/README.md +19 -0
- arrowsql-0.1.0/examples/_demo.py +60 -0
- arrowsql-0.1.0/examples/agent_mode.py +45 -0
- arrowsql-0.1.0/examples/arrow_duckdb.py +64 -0
- arrowsql-0.1.0/examples/odbc2deltalake_sync.py +101 -0
- arrowsql-0.1.0/examples/write_arrow.py +44 -0
- arrowsql-0.1.0/pyproject.toml +72 -0
- arrowsql-0.1.0/python/arrowsql/__init__.py +653 -0
- arrowsql-0.1.0/python/arrowsql/_rust_auth.py +170 -0
- arrowsql-0.1.0/python/arrowsql/_server_sqlstate.py +11 -0
- arrowsql-0.1.0/python/arrowsql/_utf8_strings.py +78 -0
- arrowsql-0.1.0/python/arrowsql/agent.py +620 -0
- arrowsql-0.1.0/python/arrowsql/aio.py +533 -0
- arrowsql-0.1.0/python/arrowsql/arrow_parallel.py +464 -0
- arrowsql-0.1.0/python/arrowsql/async_query/__init__.py +40 -0
- arrowsql-0.1.0/python/arrowsql/async_query/_connection_context.py +39 -0
- arrowsql-0.1.0/python/arrowsql/async_query/_native.py +24 -0
- arrowsql-0.1.0/python/arrowsql/async_query/async_connection.py +160 -0
- arrowsql-0.1.0/python/arrowsql/async_query/async_cursor.py +225 -0
- arrowsql-0.1.0/python/arrowsql/async_query/async_execute.py +113 -0
- arrowsql-0.1.0/python/arrowsql/async_query/async_fetch.py +153 -0
- arrowsql-0.1.0/python/arrowsql/async_query/exception_translator.py +132 -0
- arrowsql-0.1.0/python/arrowsql/auth.py +913 -0
- arrowsql-0.1.0/python/arrowsql/bulk_parallel.py +385 -0
- arrowsql-0.1.0/python/arrowsql/connection.py +2377 -0
- arrowsql-0.1.0/python/arrowsql/connection_string_builder.py +114 -0
- arrowsql-0.1.0/python/arrowsql/connection_string_parser.py +417 -0
- arrowsql-0.1.0/python/arrowsql/constants.py +701 -0
- arrowsql-0.1.0/python/arrowsql/cursor.py +4516 -0
- arrowsql-0.1.0/python/arrowsql/db_connection.py +98 -0
- arrowsql-0.1.0/python/arrowsql/ddbc_bindings.pyi +283 -0
- arrowsql-0.1.0/python/arrowsql/decimal_config.py +98 -0
- arrowsql-0.1.0/python/arrowsql/exceptions.py +378 -0
- arrowsql-0.1.0/python/arrowsql/helpers.py +436 -0
- arrowsql-0.1.0/python/arrowsql/logging.py +700 -0
- arrowsql-0.1.0/python/arrowsql/mssql_python.pyi +579 -0
- arrowsql-0.1.0/python/arrowsql/odbc_provider.py +269 -0
- arrowsql-0.1.0/python/arrowsql/parameter_helper.py +442 -0
- arrowsql-0.1.0/python/arrowsql/perf_timer.py +286 -0
- arrowsql-0.1.0/python/arrowsql/pooling.py +147 -0
- arrowsql-0.1.0/python/arrowsql/py.typed +1 -0
- arrowsql-0.1.0/python/arrowsql/row.py +462 -0
- arrowsql-0.1.0/python/arrowsql/type.py +160 -0
- arrowsql-0.1.0/python/mssql_python/__init__.py +39 -0
- arrowsql-0.1.0/requirements-dev.txt +12 -0
- arrowsql-0.1.0/scripts/bench_reproduce.sh +309 -0
- arrowsql-0.1.0/scripts/build.sh +21 -0
- arrowsql-0.1.0/scripts/check_upstream_baseline.py +75 -0
- arrowsql-0.1.0/scripts/ci/install-sqlserver-windows.ps1 +49 -0
- arrowsql-0.1.0/scripts/codex_review.sh +18 -0
- arrowsql-0.1.0/scripts/env.sh +24 -0
- arrowsql-0.1.0/scripts/load_taxi.py +93 -0
- arrowsql-0.1.0/scripts/overlay_upstream_binding.sh +33 -0
- arrowsql-0.1.0/scripts/release_rustflags.sh +7 -0
- arrowsql-0.1.0/scripts/run_tests.py +61 -0
- arrowsql-0.1.0/scripts/setup_tls_cert.sh +41 -0
- arrowsql-0.1.0/scripts/test_overlay.sh +12 -0
- arrowsql-0.1.0/scripts/wheel_size.sh +95 -0
- arrowsql-0.1.0/src/agent/fmt.rs +114 -0
- arrowsql-0.1.0/src/agent/mod.rs +268 -0
- arrowsql-0.1.0/src/agent/render.rs +679 -0
- arrowsql-0.1.0/src/agent/sqltype.rs +75 -0
- arrowsql-0.1.0/src/aio/connection.rs +478 -0
- arrowsql-0.1.0/src/aio/convert.rs +231 -0
- arrowsql-0.1.0/src/aio/hub.rs +293 -0
- arrowsql-0.1.0/src/aio/mod.rs +25 -0
- arrowsql-0.1.0/src/aio/pool.rs +376 -0
- arrowsql-0.1.0/src/aio/session.rs +847 -0
- arrowsql-0.1.0/src/arrow/export.rs +685 -0
- arrowsql-0.1.0/src/arrow/mod.rs +150 -0
- arrowsql-0.1.0/src/arrow/plan.rs +135 -0
- arrowsql-0.1.0/src/arrow/sink.rs +699 -0
- arrowsql-0.1.0/src/bulk/arrow_encode.rs +823 -0
- arrowsql-0.1.0/src/bulk/arrow_source.rs +74 -0
- arrowsql-0.1.0/src/bulk/arrow_wire.rs +431 -0
- arrowsql-0.1.0/src/bulk/mod.rs +309 -0
- arrowsql-0.1.0/src/bulk/rows.rs +896 -0
- arrowsql-0.1.0/src/bulk/settings.rs +179 -0
- arrowsql-0.1.0/src/bulk/wire.rs +359 -0
- arrowsql-0.1.0/src/catalog.rs +328 -0
- arrowsql-0.1.0/src/connection.rs +749 -0
- arrowsql-0.1.0/src/connstr.rs +382 -0
- arrowsql-0.1.0/src/consts.rs +70 -0
- arrowsql-0.1.0/src/decode/binary.rs +51 -0
- arrowsql-0.1.0/src/decode/buffer.rs +366 -0
- arrowsql-0.1.0/src/decode/describe.rs +223 -0
- arrowsql-0.1.0/src/decode/hidden.rs +123 -0
- arrowsql-0.1.0/src/decode/mod.rs +19 -0
- arrowsql-0.1.0/src/decode/numeric.rs +47 -0
- arrowsql-0.1.0/src/decode/python.rs +350 -0
- arrowsql-0.1.0/src/decode/temporal.rs +177 -0
- arrowsql-0.1.0/src/decode/text.rs +72 -0
- arrowsql-0.1.0/src/diag.rs +180 -0
- arrowsql-0.1.0/src/getinfo.rs +229 -0
- arrowsql-0.1.0/src/lib.rs +181 -0
- arrowsql-0.1.0/src/logging.rs +60 -0
- arrowsql-0.1.0/src/params/batch.rs +664 -0
- arrowsql-0.1.0/src/params/mod.rs +297 -0
- arrowsql-0.1.0/src/params/null_types.rs +69 -0
- arrowsql-0.1.0/src/params/placeholders.rs +197 -0
- arrowsql-0.1.0/src/params/py_types.rs +1832 -0
- arrowsql-0.1.0/src/params/pyformat.rs +111 -0
- arrowsql-0.1.0/src/params/udt.rs +195 -0
- arrowsql-0.1.0/src/pooling.rs +336 -0
- arrowsql-0.1.0/src/rowfactory.rs +70 -0
- arrowsql-0.1.0/src/runtime.rs +279 -0
- arrowsql-0.1.0/src/statement/batch_rpc.rs +304 -0
- arrowsql-0.1.0/src/statement/cancel.rs +117 -0
- arrowsql-0.1.0/src/statement/cursor.rs +667 -0
- arrowsql-0.1.0/src/statement/exec.rs +605 -0
- arrowsql-0.1.0/src/statement/mod.rs +218 -0
- arrowsql-0.1.0/src/statement/odbc.rs +451 -0
- arrowsql-0.1.0/src/statement/wire.rs +278 -0
- arrowsql-0.1.0/src/types.rs +124 -0
- arrowsql-0.1.0/src/utf8_wrap.rs +224 -0
- arrowsql-0.1.0/tests/common_issues/conftest.py +62 -0
- arrowsql-0.1.0/tests/common_issues/ported/LICENSE_ctds.txt +21 -0
- arrowsql-0.1.0/tests/common_issues/ported/LICENSE_dotnet_sqlclient.txt +21 -0
- arrowsql-0.1.0/tests/common_issues/ported/LICENSE_go_mssqldb.txt +28 -0
- arrowsql-0.1.0/tests/common_issues/ported/LICENSE_sqlalchemy.txt +19 -0
- arrowsql-0.1.0/tests/common_issues/ported/README.md +15 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_cursor_fetch.py +229 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_executemany.py +128 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_transactions.py +194 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_async_threads.py +268 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_errors_values.py +211 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_lifecycle_pool.py +185 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_go_mssqldb_bulkcopy.py +278 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_go_mssqldb_xact_guid.py +165 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_jdbc_bigint_guid.py +209 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_jdbc_temporal_params.py +161 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_rs_arrow_bulkcopy.py +309 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_rs_bulkcopy.py +226 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_bulkcopy_paths.py +110 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_qmark_substitution.py +123 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_types_procs.py +142 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_connection.py +256 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_cursor_results.py +216 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_types.py +98 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_rust_mssql_driver_bulkcopy.py +367 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_rust_mssql_driver_param_echo.py +136 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_catalog.py +173 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_identity_sequence.py +210 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_query.py +204 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_types.py +120 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlclient_bulkcopy.py +328 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlclient_scalar_commands.py +180 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tedious_protocol.py +357 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tedious_statements.py +82 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_bulk.py +173 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_login_password.py +58 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_query_types.py +170 -0
- arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_results_transactions.py +205 -0
- arrowsql-0.1.0/tests/common_issues/rs_dtypes.py +519 -0
- arrowsql-0.1.0/tests/common_issues/test_binary_guid.py +357 -0
- arrowsql-0.1.0/tests/common_issues/test_connection_strings.py +367 -0
- arrowsql-0.1.0/tests/common_issues/test_dead_connection.py +335 -0
- arrowsql-0.1.0/tests/common_issues/test_decimal_numeric.py +273 -0
- arrowsql-0.1.0/tests/common_issues/test_executemany.py +342 -0
- arrowsql-0.1.0/tests/common_issues/test_g1_pyformat_scanner.py +186 -0
- arrowsql-0.1.0/tests/common_issues/test_integers_bool_float.py +271 -0
- arrowsql-0.1.0/tests/common_issues/test_issue_581_sqlstate.py +421 -0
- arrowsql-0.1.0/tests/common_issues/test_large_values.py +338 -0
- arrowsql-0.1.0/tests/common_issues/test_messages_errors.py +257 -0
- arrowsql-0.1.0/tests/common_issues/test_multiple_results.py +284 -0
- arrowsql-0.1.0/tests/common_issues/test_nulls_typing.py +278 -0
- arrowsql-0.1.0/tests/common_issues/test_row_access.py +342 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_agent_mode.py +573 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_aio.py +556 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_aio_pool_semantics.py +349 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_aio.py +108 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_exotic.py +476 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_paths.py +261 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_special.py +768 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_arith_errors.py +225 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_arrow_native.py +402 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_arrow_stream_close.py +165 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_arrow_type_mapping.py +371 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_auth_keywords.py +294 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_batch_parsing.py +174 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bigint_overflow_agg.py +225 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_decimal_width.py +59 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_native.py +428 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_native_rows.py +288 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_parallel.py +146 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_parallel_rows.py +249 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_rows_pipeline.py +326 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_bulk_serializer_chunks.py +48 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_cancel.py +279 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_char_padding.py +215 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_client_cpu_paths.py +91 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_collation_case.py +286 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_core_regressions.py +548 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_cte_recursion.py +346 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_database_context.py +244 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_date_strings_dateformat.py +250 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_datetimeoffset_deep.py +341 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_decimal_param_inference.py +269 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_decode_fastpaths.py +195 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_defaults_computed.py +241 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_description_types.py +320 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_duckdb_integration.py +269 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_error_mid_resultset.py +203 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_executemany_types.py +114 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_fetch_sizes_arraysize.py +270 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_float_real_edges.py +246 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_for_json.py +237 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_g3_decode_encode.py +97 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_hidden_columns.py +136 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_hierarchyid.py +267 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_identifiers_quoting.py +213 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_identity_triggers.py +312 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_isolation_levels.py +384 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_leaks_lifecycle.py +299 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_legacy_datetime_rounding.py +241 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_legacy_lob_types.py +279 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_locking_blocking.py +440 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_merge_output.py +331 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_message_flood.py +245 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_metadata_reuse.py +79 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_money_arithmetic.py +242 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_null_semantics.py +291 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_output_clause.py +318 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_pandas_polars_io.py +381 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_param_binding_fastpaths.py +133 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_param_fast_cells.py +87 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_param_type_plancache.py +302 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_param_wire_paths.py +58 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_pyformat_named.py +227 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_read_arrow_partitions.py +259 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_read_arrow_stream.py +292 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_rowversion_concurrency.py +244 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_savepoints_nested.py +347 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_session_set_options.py +445 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_setinputsizes.py +275 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_sparse_columnsets.py +269 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_spatial_deep.py +383 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_sql_variant_deep.py +313 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_string_truncation.py +243 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_temporal_tables.py +354 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_time7_precision.py +83 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_time_scales.py +216 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_triggers_rowcount.py +300 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_tvp_support.py +244 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_uniqueidentifier_order.py +333 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_utf8_collations.py +272 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_utf8_strings.py +215 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_varchar_codepages.py +260 -0
- arrowsql-0.1.0/tests/common_issues/test_rs_xml_deep.py +271 -0
- arrowsql-0.1.0/tests/common_issues/test_scope_identity_temp.py +273 -0
- arrowsql-0.1.0/tests/common_issues/test_special_types.py +359 -0
- arrowsql-0.1.0/tests/common_issues/test_stored_procs.py +343 -0
- arrowsql-0.1.0/tests/common_issues/test_temporal.py +306 -0
- arrowsql-0.1.0/tests/common_issues/test_threading_gil.py +465 -0
- arrowsql-0.1.0/tests/common_issues/test_timeouts_cancel.py +351 -0
- arrowsql-0.1.0/tests/common_issues/test_transactions.py +350 -0
- arrowsql-0.1.0/tests/common_issues/test_unicode.py +247 -0
- arrowsql-0.1.0/tests/common_issues/test_wide_and_many.py +269 -0
- arrowsql-0.1.0/tests/port/test_free_threaded.py +107 -0
- arrowsql-0.1.0/tests/port/test_runtime_fork.py +134 -0
- arrowsql-0.1.0/tests/port/test_tls.py +123 -0
- arrowsql-0.1.0/tests/upstream_excluded.txt +12 -0
- arrowsql-0.1.0/tests/upstream_passing_baseline.txt +4253 -0
- arrowsql-0.1.0/vendor/mssql-tds/.env +5 -0
- arrowsql-0.1.0/vendor/mssql-tds/Cargo.toml +133 -0
- arrowsql-0.1.0/vendor/mssql-tds/LICENSE +21 -0
- arrowsql-0.1.0/vendor/mssql-tds/README.md +101 -0
- arrowsql-0.1.0/vendor/mssql-tds/VENDOR.md +115 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/cli.rs +4 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/blocking.rs +289 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/bulk_copy.rs +1804 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/bulk_copy_state.rs +409 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/client_context.rs +2112 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/connect_stage.rs +399 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/connection_actions.rs +1559 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/cursor_ops.rs +1174 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/datasource_parser.rs +1729 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/dns_cache.rs +479 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/execution_context.rs +627 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/instance_cache.rs +198 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/metadata_retriever.rs +807 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/multi_subnet_failover.rs +481 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/session_recovery.rs +1321 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/tds_client.rs +22748 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/any_transport.rs +798 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/buffers.rs +772 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/busy_poll.rs +134 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/certificate_validator.rs +341 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/extractable_stream.rs +384 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/localdb.rs +705 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/named_pipes.rs +325 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/network_transport.rs +7811 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/parallel_connect.rs +797 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/ssl_handler.rs +813 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tds_transport.rs +115 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls/native_tls_engine.rs +234 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls/rustls_engine.rs +368 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls.rs +103 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/alpn.rs +243 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/bindings.rs +113 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/cred.rs +376 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/engine.rs +222 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/errors.rs +116 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/handshake.rs +538 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/mod.rs +42 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/record_layer.rs +576 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/sspi.rs +94 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/stream.rs +955 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/validate.rs +289 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport.rs +26 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection.rs +37 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection_provider/tds_connection_provider.rs +1616 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/connection_provider.rs +10 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/core.rs +393 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/cursor/cursor_response.rs +182 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/cursor/cursor_types.rs +630 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/cursor/mod.rs +37 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/bulk_copy_metadata.rs +1584 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/bulk_copy_metadata_tests.rs +165 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/column_values.rs +576 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/decoder.rs +8003 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/encoder.rs +47 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/lcid_encoding.rs +427 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/row_writer.rs +595 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_json.rs +104 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_string/encoding.rs +566 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_string.rs +1108 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_tvp.rs +1312 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_udt.rs +215 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_vector.rs +309 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sqldatatypes.rs +1811 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sqltypes.rs +2716 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sync_decoder.rs +0 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/tds_value_serializer.rs +5367 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/datatypes.rs +34 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/error/bulk_copy_errors.rs +223 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/error/mod.rs +805 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/fuzz_support.rs +1225 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/handler/handler_factory.rs +1057 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/handler/sspi_handler.rs +274 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/handler.rs +7 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/io/packet_reader.rs +201 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/io/packet_writer.rs +1961 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/io/reader_writer.rs +110 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/io/token_stream.rs +2416 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/io.rs +30 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/lib.rs +126 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/attention.rs +32 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/batch.rs +86 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/bulk_load.rs +1698 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/bulk_load_tests.rs +513 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/always_encrypted.rs +223 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/data_classification.rs +341 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/dns_caching.rs +164 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/enhanced_routing.rs +162 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/fedauth.rs +337 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/jsonfeature.rs +167 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/session_recovery.rs +722 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/useragent.rs +403 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/utf8.rs +107 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features/vectorfeature.rs +218 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/features.rs +13 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/headers.rs +300 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/login.rs +3052 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/login_options.rs +597 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/messages.rs +252 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/parameters/rpc_parameters.rs +2306 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/parameters.rs +5 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/prelogin.rs +596 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/rpc.rs +690 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message/transaction_management.rs +210 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/message.rs +26 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/query/metadata.rs +744 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/query/result.rs +42 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/query.rs +20 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/cell_decryptor.rs +40 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/apple.rs +290 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/cng.rs +798 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/der.rs +359 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/mod.rs +222 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/openssl.rs +179 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/unsupported.rs +70 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/describe_parameter_encryption.rs +317 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/aead_aes_256_cbc_hmac_sha256.rs +376 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/cell.rs +1595 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/mod.rs +20 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/error.rs +382 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/keystore/certificate.rs +445 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/keystore/mod.rs +620 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/mock.rs +376 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/mod.rs +104 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/query_metadata_cache.rs +193 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/security_context.rs +287 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/spn.rs +425 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/gssapi_context.rs +640 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/gssapi_ffi.rs +988 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/mod.rs +40 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/mod.rs +44 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/sspi_context.rs +383 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/sspi_ffi.rs +507 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/sql_identifier.rs +530 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/ssrp.rs +925 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/test_client_support.rs +1080 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/test_packet_support.rs +229 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/data_classification.rs +206 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/fed_auth_info.rs +146 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/login_ack.rs +90 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/col_info_parser.rs +94 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/colmetadata_parser.rs +880 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/common.rs +256 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/data_classification_parser.rs +806 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/done_parser.rs +313 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/envchange_parser.rs +1271 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/error_parser.rs +346 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/featureext_parser.rs +49 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/fedauth_parser.rs +710 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/info_parser.rs +297 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/loginack_parser.rs +59 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/mod.rs +121 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/nbcrow_parser.rs +334 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/order_parser.rs +136 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/returnstatus_parser.rs +183 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/returnvalue_parser.rs +93 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/row_parser.rs +326 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/session_state_parser.rs +325 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/sspi_parser.rs +171 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/tab_name_parser.rs +66 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/tokenitems.rs +85 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token/tokens.rs +1619 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/token.rs +13 -0
- arrowsql-0.1.0/vendor/mssql-tds/src/trace_context.rs +683 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Size flag for the release cdylib on x86_64 glibc Linux (lld, the default linker
|
|
2
|
+
# since Rust 1.90): identical-code folding.
|
|
3
|
+
# `-z pack-relative-relocs` (DT_RELR) is NOT set here: it needs glibc >= 2.36 at
|
|
4
|
+
# load time and would break manylinux_2_28 wheels. scripts/build.sh --release and
|
|
5
|
+
# scripts/wheel_size.sh add it for local builds (scripts/release_rustflags.sh).
|
|
6
|
+
[target.x86_64-unknown-linux-gnu]
|
|
7
|
+
rustflags = ["-C", "link-arg=-Wl,--icf=all"]
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# GitHub language statistics (linguist).
|
|
2
|
+
# tests/upstream is Microsoft's mssql-python test suite, copied in unchanged.
|
|
3
|
+
tests/upstream/** linguist-vendored
|
|
4
|
+
# vendor/mssql-tds is the TDS client this driver is built on, carried with local
|
|
5
|
+
# patches (vendor/mssql-tds/VENDOR.md): count it as this repository's Rust.
|
|
6
|
+
vendor/mssql-tds/** linguist-vendored=false
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project. Format follows
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
|
|
5
|
+
[SemVer](https://semver.org/) once 1.0 is reached (0.x may break).
|
|
6
|
+
|
|
7
|
+
Version numbers in this project are deliberately three different things:
|
|
8
|
+
|
|
9
|
+
| what | value | meaning |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| distribution `arrowsql` | 0.1.0 | this project's release number (`pyproject.toml`) |
|
|
12
|
+
| `arrowsql.__version__` | 1.16.0 | the upstream `mssql-python` release the Python layer is vendored from; kept so code that checks the upstream version keeps working |
|
|
13
|
+
| `arrowsql.ddbc_bindings.__version__` | 1.0.0 | version of the Rust binding contract (`docs/CONTRACT.md`) |
|
|
14
|
+
|
|
15
|
+
## [Unreleased]
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- UTF-8 transfer for Arrow reads: `read_arrow(..., utf8_strings=True)` and the new
|
|
20
|
+
`cursor.execute_arrow(sql, params=None, *, utf8_strings=True, batch_size=...)` describe the
|
|
21
|
+
result and cast nvarchar/nchar/ntext columns to a UTF-8 collated varchar on the server (query
|
|
22
|
+
wrapping is built in Rust: `ddbc_bindings.utf8_wrap_query`). About half the string bytes on
|
|
23
|
+
the wire; same Arrow result. Needs SQL Server 2019+/Azure SQL; falls back to the original
|
|
24
|
+
query on ORDER BY, parameters, duplicate/empty column names, describe failures, a small
|
|
25
|
+
string share of the row, or when the first 256 rows are not at least 10% smaller in UTF-8 (CJK
|
|
26
|
+
grows). `utf8_strings=False` opts out.
|
|
27
|
+
- Bulk copy writes each DECIMAL cell at the shortest legal magnitude width (4/8/12/16 bytes)
|
|
28
|
+
instead of the width implied by the column precision. SQL Server accepts this; 1M rows of nine
|
|
29
|
+
`decimal(38,2)` columns with small values upload 55 MB instead of 163 MB. `ARROWSQL_DECIMAL_FIXED=1`
|
|
30
|
+
restores precision-width cells.
|
|
31
|
+
- The project is called **arrowsql** (distribution and import name `arrowsql`,
|
|
32
|
+
repository github.com/bmsuisse/arrowsql). A `mssql_python` alias package keeps
|
|
33
|
+
`import mssql_python` working: its modules are the `arrowsql` modules.
|
|
34
|
+
- PyO3 extension `arrowsql.ddbc_bindings` over Microsoft's `mssql-tds`
|
|
35
|
+
(vendored, with local patches, in `vendor/mssql-tds`): no ODBC driver, same
|
|
36
|
+
Python API as upstream mssql-python 1.16.0.
|
|
37
|
+
- Native Arrow: `cursor.arrow()`, `arrow_batch()`, `arrow_reader()`,
|
|
38
|
+
`fetchall_arrow()`, `fetchmany_arrow()`, `arrow_stream()`, `read_arrow()`
|
|
39
|
+
(partitioned parallel reads).
|
|
40
|
+
- Agent mode (`arrowsql.agent`, `python -m arrowsql.agent`, console script
|
|
41
|
+
`arrowsql-agent`), ported from arrowbricks: `query()` / `query_cursor()` return
|
|
42
|
+
a compact typed TSV (or Markdown) preview with a strict byte ceiling, row and
|
|
43
|
+
cell limits, an optional head/tail sample, a footer that never claims an
|
|
44
|
+
unknown total, `-- rows_affected` / `-- message` lines and every result set;
|
|
45
|
+
failures are JSON with a category, the server's own message and a recovery
|
|
46
|
+
hint (SQL Server error number, then SQLSTATE). Rendering is Rust
|
|
47
|
+
(`ddbc_bindings.AgentRender`) over the Arrow sink; `sql_variant` is now
|
|
48
|
+
readable through it.
|
|
49
|
+
- `read_arrow_stream()`: partitioned parallel read as a bounded, unordered Arrow
|
|
50
|
+
stream (`__arrow_c_stream__`; native `ArrowMergeStream` fed by one connection
|
|
51
|
+
per worker) so DuckDB / deltalake overlap with the read and memory stays
|
|
52
|
+
bounded. `close()` or an early-stopping consumer cancels the statements and
|
|
53
|
+
closes the worker connections; the first worker error reaches the consumer.
|
|
54
|
+
`read_arrow()` is now built on it. `partition_bounds=` (and
|
|
55
|
+
`partition_nullable=`) take typed boundaries (int, date/datetime, Decimal,
|
|
56
|
+
str) as disjoint half-open slices plus a NULL slice, bound as parameters,
|
|
57
|
+
with no MIN/MAX or size probe.
|
|
58
|
+
- Native bulk copy (rows and Arrow), `write_arrow()` parallel loads.
|
|
59
|
+
- Native asyncio (`arrowsql.aio`) with a built-in pool (Unix only).
|
|
60
|
+
- `sqlstate` and `native_error` on every exception
|
|
61
|
+
([upstream #581](https://github.com/microsoft/mssql-python/issues/581));
|
|
62
|
+
bulk copy on the cursor's own connection, so `#temp` tables work
|
|
63
|
+
([#492](https://github.com/microsoft/mssql-python/issues/492)).
|
|
64
|
+
- Type stubs for the port-specific API (`ddbc_bindings.pyi`, RUST-PORT section of
|
|
65
|
+
`mssql_python.pyi`).
|
|
66
|
+
- CI (`.github/workflows/ci.yml`) and a wheel/sdist build workflow
|
|
67
|
+
(`wheels.yml`, artifacts only, no publishing).
|
|
68
|
+
- Project metadata: SPDX license, classifiers, URLs; CONTRIBUTING.
|
|
69
|
+
|
|
70
|
+
### Changed
|
|
71
|
+
|
|
72
|
+
- `-z pack-relative-relocs` moved out of `.cargo/config.toml` into the local
|
|
73
|
+
release scripts, so CI manylinux_2_28 wheels do not require glibc 2.36.
|
|
74
|
+
- The `async-preview` extra pins `mssql-python-rs==0.4.0` (was 0.3.0).
|
|
75
|
+
- The sdist now carries `vendor/mssql-tds`.
|
|
76
|
+
|
|
77
|
+
### Known gaps
|
|
78
|
+
|
|
79
|
+
- Pool checkout does not probe an idle connection with a timeout (upstream
|
|
80
|
+
GH #854), and `set_attr(SQL_ATTR_CONNECTION_TIMEOUT)` is not carried across
|
|
81
|
+
pool reuse. See `tests/upstream_excluded.txt`.
|
|
82
|
+
- Always Encrypted, `ActiveDirectoryPassword` and NTLM are not supported.
|
|
83
|
+
- Only Linux x86_64 has been exercised against a database.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
You need Rust (stable, 1.90+), Python 3.10+ and a SQL Server 2022 you can write to
|
|
6
|
+
(`mcr.microsoft.com/mssql/server:2022-latest` in docker or podman is fine).
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
uv venv -p 3.13 .venv && VIRTUAL_ENV=.venv uv pip install -r requirements-dev.txt
|
|
10
|
+
scripts/build.sh # dev build into .venv; --release for benchmarks
|
|
11
|
+
export DB_CONNECTION_STRING="Server=localhost,1433;Database=master;Uid=sa;Pwd=...;Encrypt=yes;TrustServerCertificate=yes"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`scripts/env.sh` and `scripts/run_tests.py` are conveniences for the maintainers'
|
|
15
|
+
setup (a `.env.local` next to the main checkout, one private database per run);
|
|
16
|
+
anyone else can just set `DB_CONNECTION_STRING`.
|
|
17
|
+
|
|
18
|
+
## Tests
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
python -m pytest -q --timeout 120 tests/common_issues tests/port
|
|
22
|
+
python scripts/check_upstream_baseline.py # vendored upstream suite vs tests/upstream_passing_baseline.txt
|
|
23
|
+
cargo test --lib
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Scope and rules for the three suites: [docs/TEST_SCOPE.md](docs/TEST_SCOPE.md). A new
|
|
27
|
+
behaviour needs a test in `tests/common_issues`. If you exclude an upstream test,
|
|
28
|
+
add it to `tests/upstream_excluded.txt` with a one-line reason.
|
|
29
|
+
|
|
30
|
+
## Code
|
|
31
|
+
|
|
32
|
+
- `cargo clippy --all-targets` should not add warnings; run `cargo fmt` on files you touch.
|
|
33
|
+
- Edits to the vendored Python layer (`python/arrowsql`) and to `vendor/mssql-tds`
|
|
34
|
+
are marked `RUST-PORT` and listed in `docs/PYTHON_LAYER_CHANGES.md` /
|
|
35
|
+
`vendor/mssql-tds/VENDOR.md`. Keep upstream's lines unchanged where you can.
|
|
36
|
+
- New binding symbols go into `docs/CONTRACT.md` and `python/arrowsql/ddbc_bindings.pyi`.
|
|
37
|
+
- Performance claims need a run of `benchmarks/run.py` (see `benchmarks/README.md`);
|
|
38
|
+
do not hand-edit `benchmarks/RESULTS.md` or the README benchmark tables.
|
|
39
|
+
- Do not commit local paths, host names or credentials.
|
|
40
|
+
|
|
41
|
+
## Pull requests
|
|
42
|
+
|
|
43
|
+
Describe what changed and how you tested it, update `CHANGELOG.md`, and keep commits
|
|
44
|
+
focused. Releases and PyPI publishing are done by the maintainers
|
|
45
|
+
(`docs/PACKAGING.md`).
|