arrowsql 0.2.0__tar.gz → 0.3.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.
Files changed (518) hide show
  1. {arrowsql-0.2.0 → arrowsql-0.3.0}/CHANGELOG.md +65 -1
  2. {arrowsql-0.2.0 → arrowsql-0.3.0}/CONTRIBUTING.md +3 -2
  3. {arrowsql-0.2.0 → arrowsql-0.3.0}/Cargo.lock +27 -1
  4. {arrowsql-0.2.0 → arrowsql-0.3.0}/Cargo.toml +25 -12
  5. {arrowsql-0.2.0 → arrowsql-0.3.0}/PKG-INFO +3 -1
  6. {arrowsql-0.2.0 → arrowsql-0.3.0}/README.md +2 -0
  7. arrowsql-0.3.0/crates/arrowsql-core/Cargo.toml +31 -0
  8. arrowsql-0.3.0/crates/arrowsql-core/src/api.rs +558 -0
  9. arrowsql-0.3.0/crates/arrowsql-core/src/arrow/mod.rs +79 -0
  10. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/arrow/sink.rs +1 -1
  11. arrowsql-0.3.0/crates/arrowsql-core/src/arrow/stream.rs +465 -0
  12. arrowsql-0.3.0/crates/arrowsql-core/src/connection.rs +246 -0
  13. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/connstr.rs +19 -0
  14. arrowsql-0.3.0/crates/arrowsql-core/src/decode/ascii.rs +90 -0
  15. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/decode/buffer.rs +52 -10
  16. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/decode/describe.rs +0 -60
  17. arrowsql-0.3.0/crates/arrowsql-core/src/decode/mod.rs +12 -0
  18. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/diag.rs +0 -9
  19. arrowsql-0.3.0/crates/arrowsql-core/src/error.rs +126 -0
  20. arrowsql-0.3.0/crates/arrowsql-core/src/lib.rs +85 -0
  21. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/params/batch.rs +39 -0
  22. arrowsql-0.3.0/crates/arrowsql-core/src/params/mod.rs +125 -0
  23. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/params/udt.rs +3 -22
  24. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/pooling.rs +8 -9
  25. arrowsql-0.3.0/crates/arrowsql-core/src/read.rs +1028 -0
  26. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/runtime.rs +92 -77
  27. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/statement/cursor.rs +28 -26
  28. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/statement/exec.rs +14 -27
  29. arrowsql-0.3.0/crates/arrowsql-core/src/statement/mod.rs +122 -0
  30. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/statement/wire.rs +18 -12
  31. arrowsql-0.3.0/crates/arrowsql-core/src/txn_abort.rs +145 -0
  32. arrowsql-0.3.0/crates/arrowsql-core/src/utf8.rs +156 -0
  33. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/utf8_wrap.rs +0 -36
  34. arrowsql-0.3.0/crates/arrowsql-core/tests/live.rs +368 -0
  35. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/ARCHITECTURE.md +67 -20
  36. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/CONTRACT.md +9 -0
  37. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/PACKAGING.md +3 -3
  38. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/PLATFORMS_AND_CONNECTION.md +39 -0
  39. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/PYTHON_LAYER_CHANGES.md +8 -1
  40. {arrowsql-0.2.0 → arrowsql-0.3.0}/pyproject.toml +3 -3
  41. arrowsql-0.3.0/python/arrowsql/_utf8_strings.py +28 -0
  42. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/aio.py +1 -1
  43. arrowsql-0.3.0/python/arrowsql/arrow_parallel.py +191 -0
  44. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/constants.py +2 -0
  45. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/ddbc_bindings.pyi +56 -0
  46. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/agent/mod.rs +1 -1
  47. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/connection.rs +5 -2
  48. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/convert.rs +27 -22
  49. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/pool.rs +15 -1
  50. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/session.rs +83 -15
  51. arrowsql-0.3.0/src/arrow/export.rs +419 -0
  52. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/arrow/mod.rs +11 -46
  53. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/arrow_source.rs +74 -10
  54. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/mod.rs +1 -1
  55. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/parallel.rs +1 -1
  56. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/connection.rs +40 -194
  57. arrowsql-0.3.0/src/decode/describe.rs +67 -0
  58. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/mod.rs +2 -4
  59. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/python.rs +6 -72
  60. arrowsql-0.3.0/src/dns_ttl_cache_tests.rs +501 -0
  61. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/errors.rs +8 -0
  62. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/lib.rs +84 -10
  63. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/logging.rs +48 -0
  64. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/params/mod.rs +2 -74
  65. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/params/py_types.rs +2 -33
  66. arrowsql-0.3.0/src/params/udt.rs +26 -0
  67. arrowsql-0.3.0/src/pooling.rs +23 -0
  68. arrowsql-0.3.0/src/read.rs +433 -0
  69. arrowsql-0.3.0/src/runtime.rs +117 -0
  70. arrowsql-0.3.0/src/statement/mod.rs +113 -0
  71. arrowsql-0.3.0/src/utf8_wrap.rs +41 -0
  72. arrowsql-0.2.0/python/arrowsql/arrow_parallel.py → arrowsql-0.3.0/tests/common_issues/arrow_parallel_reference.py +67 -2
  73. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_dead_connection.py +7 -2
  74. arrowsql-0.3.0/tests/common_issues/test_lob_arena_reservation.py +28 -0
  75. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_review_security_scripts.py +24 -10
  76. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_aio_review.py +107 -0
  77. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_parallel_native.py +81 -0
  78. arrowsql-0.3.0/tests/common_issues/test_rs_r5_aio_session.py +188 -0
  79. arrowsql-0.3.0/tests/common_issues/test_rs_read_arrow_parity.py +202 -0
  80. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_read_arrow_partitions.py +9 -23
  81. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_utf8_strings.py +5 -5
  82. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_timeouts_cancel.py +24 -0
  83. arrowsql-0.3.0/tests/port/test_dns_cache.py +250 -0
  84. arrowsql-0.3.0/tests/port/test_mirroring_partner.py +117 -0
  85. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/port/test_runtime_fork.py +38 -0
  86. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/VENDOR.md +33 -3
  87. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/client_context.rs +6 -0
  88. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/connect_stage.rs +3 -0
  89. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/dns_cache.rs +173 -5
  90. arrowsql-0.3.0/vendor/mssql-tds/src/connection/dns_ttl_cache.rs +484 -0
  91. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/execution_context.rs +7 -4
  92. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/network_transport.rs +58 -3
  93. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/parallel_connect.rs +56 -5
  94. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection.rs +37 -0
  95. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection_provider/tds_connection_provider.rs +21 -7
  96. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/ssrp.rs +6 -1
  97. arrowsql-0.2.0/python/arrowsql/_utf8_strings.py +0 -78
  98. arrowsql-0.2.0/src/arrow/export.rs +0 -685
  99. arrowsql-0.2.0/src/statement/mod.rs +0 -219
  100. {arrowsql-0.2.0 → arrowsql-0.3.0}/.cargo/config.toml +0 -0
  101. {arrowsql-0.2.0 → arrowsql-0.3.0}/.gitattributes +0 -0
  102. {arrowsql-0.2.0 → arrowsql-0.3.0}/.gitignore +0 -0
  103. {arrowsql-0.2.0 → arrowsql-0.3.0}/AGENTS.md +0 -0
  104. {arrowsql-0.2.0 → arrowsql-0.3.0}/LICENSE +0 -0
  105. {arrowsql-0.2.0 → arrowsql-0.3.0}/LICENSE.upstream-mssql-python +0 -0
  106. {arrowsql-0.2.0 → arrowsql-0.3.0}/build.rs +0 -0
  107. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/arrow/plan.rs +0 -0
  108. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/consts.rs +0 -0
  109. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/decode/hidden.rs +0 -0
  110. {arrowsql-0.2.0/src/agent → arrowsql-0.3.0/crates/arrowsql-core/src}/fmt.rs +0 -0
  111. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/numeric.rs +0 -0
  112. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/params/null_types.rs +0 -0
  113. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/params/placeholders.rs +0 -0
  114. {arrowsql-0.2.0 → arrowsql-0.3.0/crates/arrowsql-core}/src/statement/cancel.rs +0 -0
  115. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/AGENT_MODE.md +0 -0
  116. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/ARROW_ODBC_RESEARCH.md +0 -0
  117. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/ARROW_PLAN.md +0 -0
  118. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/ASYNC.md +0 -0
  119. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/BENCHMARK_SUMMARY.md +0 -0
  120. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/EXPORT_RESEARCH.md +0 -0
  121. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/FEATURES.md +0 -0
  122. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/FREE_THREADED.md +0 -0
  123. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/PERFORMANCE_RESEARCH.md +0 -0
  124. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/ROADMAP.md +0 -0
  125. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/TEST_SCOPE.md +0 -0
  126. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/UPSTREAM_BUGS_FOUND.md +0 -0
  127. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/UPSTREAM_ISSUES.md +0 -0
  128. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/assets/icon.svg +0 -0
  129. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/assets/logo-dark-static.svg +0 -0
  130. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/assets/logo-dark.svg +0 -0
  131. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/assets/logo-static.svg +0 -0
  132. {arrowsql-0.2.0 → arrowsql-0.3.0}/docs/assets/logo.svg +0 -0
  133. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/README.md +0 -0
  134. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/_demo.py +0 -0
  135. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/agent_mode.py +0 -0
  136. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/arrow_duckdb.py +0 -0
  137. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/odbc2deltalake_sync.py +0 -0
  138. {arrowsql-0.2.0 → arrowsql-0.3.0}/examples/write_arrow.py +0 -0
  139. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/__init__.py +0 -0
  140. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/_rust_auth.py +0 -0
  141. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/_server_sqlstate.py +0 -0
  142. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/agent.py +0 -0
  143. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/__init__.py +0 -0
  144. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/_connection_context.py +0 -0
  145. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/_native.py +0 -0
  146. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/async_connection.py +0 -0
  147. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/async_cursor.py +0 -0
  148. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/async_execute.py +0 -0
  149. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/async_fetch.py +0 -0
  150. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/async_query/exception_translator.py +0 -0
  151. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/auth.py +0 -0
  152. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/bulk_parallel.py +0 -0
  153. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/connection.py +0 -0
  154. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/connection_string_builder.py +0 -0
  155. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/connection_string_parser.py +0 -0
  156. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/cursor.py +0 -0
  157. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/db_connection.py +0 -0
  158. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/decimal_config.py +0 -0
  159. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/exceptions.py +0 -0
  160. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/helpers.py +0 -0
  161. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/logging.py +0 -0
  162. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/mssql_python.pyi +0 -0
  163. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/odbc_provider.py +0 -0
  164. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/parameter_helper.py +0 -0
  165. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/perf_timer.py +0 -0
  166. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/pooling.py +0 -0
  167. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/py.typed +0 -0
  168. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/row.py +0 -0
  169. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/arrowsql/type.py +0 -0
  170. {arrowsql-0.2.0 → arrowsql-0.3.0}/python/mssql_python/__init__.py +0 -0
  171. {arrowsql-0.2.0 → arrowsql-0.3.0}/requirements-dev.txt +0 -0
  172. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/bench_reproduce.sh +0 -0
  173. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/build.sh +0 -0
  174. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/check_upstream_baseline.py +0 -0
  175. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/ci/install-sqlserver-windows.ps1 +0 -0
  176. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/codex_review.sh +0 -0
  177. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/env.sh +0 -0
  178. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/load_taxi.py +0 -0
  179. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/overlay_upstream_binding.sh +0 -0
  180. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/release_rustflags.sh +0 -0
  181. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/run_tests.py +0 -0
  182. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/setup_tls_cert.sh +0 -0
  183. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/test_overlay.sh +0 -0
  184. {arrowsql-0.2.0 → arrowsql-0.3.0}/scripts/wheel_size.sh +0 -0
  185. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/agent/render.rs +0 -0
  186. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/agent/sqltype.rs +0 -0
  187. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/hub.rs +0 -0
  188. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/aio/mod.rs +0 -0
  189. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/arrow_encode.rs +0 -0
  190. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/arrow_wire.rs +0 -0
  191. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/rows.rs +0 -0
  192. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/settings.rs +0 -0
  193. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/bulk/wire.rs +0 -0
  194. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/catalog.rs +0 -0
  195. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/binary.rs +0 -0
  196. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/numeric.rs +0 -0
  197. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/temporal.rs +0 -0
  198. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/decode/text.rs +0 -0
  199. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/getinfo.rs +0 -0
  200. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/params/pyformat.rs +0 -0
  201. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/rowfactory.rs +0 -0
  202. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/statement/batch_rpc.rs +0 -0
  203. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/statement/odbc.rs +0 -0
  204. {arrowsql-0.2.0 → arrowsql-0.3.0}/src/types.rs +0 -0
  205. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/conftest.py +0 -0
  206. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/LICENSE_ctds.txt +0 -0
  207. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/LICENSE_dotnet_sqlclient.txt +0 -0
  208. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/LICENSE_go_mssqldb.txt +0 -0
  209. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/LICENSE_sqlalchemy.txt +0 -0
  210. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/README.md +0 -0
  211. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_ctds_cursor_fetch.py +0 -0
  212. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_ctds_executemany.py +0 -0
  213. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_ctds_transactions.py +0 -0
  214. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_fastmssql_async_threads.py +0 -0
  215. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_fastmssql_errors_values.py +0 -0
  216. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_fastmssql_lifecycle_pool.py +0 -0
  217. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_go_mssqldb_bulkcopy.py +0 -0
  218. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_go_mssqldb_xact_guid.py +0 -0
  219. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_mssql_jdbc_bigint_guid.py +0 -0
  220. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_mssql_jdbc_temporal_params.py +0 -0
  221. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_mssql_rs_arrow_bulkcopy.py +0 -0
  222. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_mssql_rs_bulkcopy.py +0 -0
  223. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pymssql_bulkcopy_paths.py +0 -0
  224. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pymssql_qmark_substitution.py +0 -0
  225. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pymssql_types_procs.py +0 -0
  226. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pyodbc_connection.py +0 -0
  227. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pyodbc_cursor_results.py +0 -0
  228. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_pyodbc_types.py +0 -0
  229. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_rust_mssql_driver_bulkcopy.py +0 -0
  230. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_rust_mssql_driver_param_echo.py +0 -0
  231. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlalchemy_catalog.py +0 -0
  232. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlalchemy_identity_sequence.py +0 -0
  233. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlalchemy_query.py +0 -0
  234. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlalchemy_types.py +0 -0
  235. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlclient_bulkcopy.py +0 -0
  236. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_sqlclient_scalar_commands.py +0 -0
  237. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tedious_protocol.py +0 -0
  238. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tedious_statements.py +0 -0
  239. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tiberius_bulk.py +0 -0
  240. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tiberius_login_password.py +0 -0
  241. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tiberius_query_types.py +0 -0
  242. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported/test_port_tiberius_results_transactions.py +0 -0
  243. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported_mssql_rs/MAPPING.md +0 -0
  244. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported_mssql_rs/test_bulk_timeout_udt.py +0 -0
  245. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported_mssql_rs/test_bulk_types_and_errors.py +0 -0
  246. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/ported_mssql_rs/test_session_and_rpc.py +0 -0
  247. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/rs_dtypes.py +0 -0
  248. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_binary_guid.py +0 -0
  249. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_connection_strings.py +0 -0
  250. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_decimal_numeric.py +0 -0
  251. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_executemany.py +0 -0
  252. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_g1_pyformat_scanner.py +0 -0
  253. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_integers_bool_float.py +0 -0
  254. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_issue_581_sqlstate.py +0 -0
  255. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_large_values.py +0 -0
  256. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_messages_errors.py +0 -0
  257. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_multiple_results.py +0 -0
  258. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_nulls_typing.py +0 -0
  259. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_review_python_security.py +0 -0
  260. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_review_security_parser.py +0 -0
  261. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_row_access.py +0 -0
  262. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_agent_mode.py +0 -0
  263. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_aio.py +0 -0
  264. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_aio_pool_semantics.py +0 -0
  265. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_all_data_types_aio.py +0 -0
  266. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_all_data_types_exotic.py +0 -0
  267. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_all_data_types_paths.py +0 -0
  268. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_all_data_types_special.py +0 -0
  269. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_arith_errors.py +0 -0
  270. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_arrow_native.py +0 -0
  271. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_arrow_stream_close.py +0 -0
  272. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_arrow_type_mapping.py +0 -0
  273. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_auth_keywords.py +0 -0
  274. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_batch_parsing.py +0 -0
  275. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bigint_overflow_agg.py +0 -0
  276. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_decimal_width.py +0 -0
  277. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_native.py +0 -0
  278. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_native_rows.py +0 -0
  279. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_parallel.py +0 -0
  280. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_parallel_rows.py +0 -0
  281. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_rows_pipeline.py +0 -0
  282. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_bulk_serializer_chunks.py +0 -0
  283. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_cancel.py +0 -0
  284. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_char_padding.py +0 -0
  285. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_client_cpu_paths.py +0 -0
  286. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_collation_case.py +0 -0
  287. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_core_regressions.py +0 -0
  288. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_cte_recursion.py +0 -0
  289. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_database_context.py +0 -0
  290. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_date_strings_dateformat.py +0 -0
  291. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_datetimeoffset_deep.py +0 -0
  292. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_decimal_param_inference.py +0 -0
  293. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_decode_fastpaths.py +0 -0
  294. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_defaults_computed.py +0 -0
  295. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_description_types.py +0 -0
  296. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_duckdb_integration.py +0 -0
  297. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_error_mid_resultset.py +0 -0
  298. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_executemany_types.py +0 -0
  299. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_fetch_sizes_arraysize.py +0 -0
  300. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_float_real_edges.py +0 -0
  301. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_for_json.py +0 -0
  302. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_g3_decode_encode.py +0 -0
  303. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_hidden_columns.py +0 -0
  304. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_hierarchyid.py +0 -0
  305. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_identifiers_quoting.py +0 -0
  306. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_identity_triggers.py +0 -0
  307. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_isolation_levels.py +0 -0
  308. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_leaks_lifecycle.py +0 -0
  309. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_legacy_datetime_rounding.py +0 -0
  310. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_legacy_lob_types.py +0 -0
  311. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_locking_blocking.py +0 -0
  312. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_merge_output.py +0 -0
  313. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_message_flood.py +0 -0
  314. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_metadata_reuse.py +0 -0
  315. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_money_arithmetic.py +0 -0
  316. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_null_semantics.py +0 -0
  317. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_output_clause.py +0 -0
  318. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_pandas_polars_io.py +0 -0
  319. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_param_binding_fastpaths.py +0 -0
  320. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_param_fast_cells.py +0 -0
  321. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_param_type_plancache.py +0 -0
  322. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_param_wire_paths.py +0 -0
  323. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_pyformat_named.py +0 -0
  324. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_read_arrow_stream.py +0 -0
  325. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_review_rust.py +0 -0
  326. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_rowversion_concurrency.py +0 -0
  327. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_savepoints_nested.py +0 -0
  328. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_session_set_options.py +0 -0
  329. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_setinputsizes.py +0 -0
  330. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_sparse_columnsets.py +0 -0
  331. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_spatial_deep.py +0 -0
  332. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_sql_variant_deep.py +0 -0
  333. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_string_truncation.py +0 -0
  334. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_temporal_tables.py +0 -0
  335. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_time7_precision.py +0 -0
  336. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_time_scales.py +0 -0
  337. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_triggers_rowcount.py +0 -0
  338. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_tvp_support.py +0 -0
  339. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_uniqueidentifier_order.py +0 -0
  340. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_utf8_collations.py +0 -0
  341. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_varchar_codepages.py +0 -0
  342. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_rs_xml_deep.py +0 -0
  343. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_scope_identity_temp.py +0 -0
  344. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_special_types.py +0 -0
  345. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_stored_procs.py +0 -0
  346. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_temporal.py +0 -0
  347. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_threading_gil.py +0 -0
  348. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_transactions.py +0 -0
  349. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_unicode.py +0 -0
  350. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/common_issues/test_wide_and_many.py +0 -0
  351. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/conftest.py +0 -0
  352. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/mockutil.py +0 -0
  353. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/test_aio_null_discovery.py +0 -0
  354. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/test_faults.py +0 -0
  355. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/test_login_tls.py +0 -0
  356. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/mock/test_results.py +0 -0
  357. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/port/test_free_threaded.py +0 -0
  358. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/port/test_tls.py +0 -0
  359. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/upstream_excluded.txt +0 -0
  360. {arrowsql-0.2.0 → arrowsql-0.3.0}/tests/upstream_passing_baseline.txt +0 -0
  361. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/.env +0 -0
  362. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/Cargo.toml +0 -0
  363. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/LICENSE +0 -0
  364. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/README.md +0 -0
  365. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/cli.rs +0 -0
  366. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/blocking.rs +0 -0
  367. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/bulk_copy.rs +0 -0
  368. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/bulk_copy_state.rs +0 -0
  369. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/connection_actions.rs +0 -0
  370. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/cursor_ops.rs +0 -0
  371. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/datasource_parser.rs +0 -0
  372. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/instance_cache.rs +0 -0
  373. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/metadata_retriever.rs +0 -0
  374. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/multi_subnet_failover.rs +0 -0
  375. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/session_recovery.rs +0 -0
  376. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/tds_client.rs +0 -0
  377. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/any_transport.rs +0 -0
  378. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/buffers.rs +0 -0
  379. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/busy_poll.rs +0 -0
  380. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/certificate_validator.rs +0 -0
  381. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/extractable_stream.rs +0 -0
  382. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/localdb.rs +0 -0
  383. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/named_pipes.rs +0 -0
  384. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/ssl_handler.rs +0 -0
  385. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/tds_transport.rs +0 -0
  386. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/tls/native_tls_engine.rs +0 -0
  387. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/tls/rustls_engine.rs +0 -0
  388. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/tls.rs +0 -0
  389. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/alpn.rs +0 -0
  390. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/bindings.rs +0 -0
  391. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/cred.rs +0 -0
  392. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/engine.rs +0 -0
  393. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/errors.rs +0 -0
  394. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/handshake.rs +0 -0
  395. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/mod.rs +0 -0
  396. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/record_layer.rs +0 -0
  397. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/sspi.rs +0 -0
  398. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/stream.rs +0 -0
  399. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport/win_tls/validate.rs +0 -0
  400. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection/transport.rs +0 -0
  401. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/connection_provider.rs +0 -0
  402. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/core.rs +0 -0
  403. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/cursor/cursor_response.rs +0 -0
  404. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/cursor/cursor_types.rs +0 -0
  405. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/cursor/mod.rs +0 -0
  406. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/bulk_copy_metadata.rs +0 -0
  407. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/bulk_copy_metadata_tests.rs +0 -0
  408. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/column_values.rs +0 -0
  409. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/decoder.rs +0 -0
  410. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/encoder.rs +0 -0
  411. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/lcid_encoding.rs +0 -0
  412. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/row_writer.rs +0 -0
  413. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_json.rs +0 -0
  414. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_string/encoding.rs +0 -0
  415. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_string.rs +0 -0
  416. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_tvp.rs +0 -0
  417. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_udt.rs +0 -0
  418. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sql_vector.rs +0 -0
  419. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sqldatatypes.rs +0 -0
  420. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sqltypes.rs +0 -0
  421. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/sync_decoder.rs +0 -0
  422. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes/tds_value_serializer.rs +0 -0
  423. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/datatypes.rs +0 -0
  424. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/error/bulk_copy_errors.rs +0 -0
  425. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/error/mod.rs +0 -0
  426. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/fuzz_support.rs +0 -0
  427. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/handler/handler_factory.rs +0 -0
  428. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/handler/sspi_handler.rs +0 -0
  429. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/handler.rs +0 -0
  430. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/io/packet_reader.rs +0 -0
  431. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/io/packet_writer.rs +0 -0
  432. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/io/reader_writer.rs +0 -0
  433. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/io/token_stream.rs +0 -0
  434. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/io.rs +0 -0
  435. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/lib.rs +0 -0
  436. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/attention.rs +0 -0
  437. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/batch.rs +0 -0
  438. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/bulk_load.rs +0 -0
  439. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/bulk_load_tests.rs +0 -0
  440. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/always_encrypted.rs +0 -0
  441. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/data_classification.rs +0 -0
  442. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/dns_caching.rs +0 -0
  443. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/enhanced_routing.rs +0 -0
  444. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/fedauth.rs +0 -0
  445. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/jsonfeature.rs +0 -0
  446. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/session_recovery.rs +0 -0
  447. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/useragent.rs +0 -0
  448. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/utf8.rs +0 -0
  449. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features/vectorfeature.rs +0 -0
  450. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/features.rs +0 -0
  451. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/headers.rs +0 -0
  452. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/login.rs +0 -0
  453. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/login_options.rs +0 -0
  454. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/messages.rs +0 -0
  455. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/parameters/rpc_parameters.rs +0 -0
  456. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/parameters.rs +0 -0
  457. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/prelogin.rs +0 -0
  458. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/rpc.rs +0 -0
  459. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message/transaction_management.rs +0 -0
  460. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/message.rs +0 -0
  461. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/query/metadata.rs +0 -0
  462. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/query/result.rs +0 -0
  463. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/query.rs +0 -0
  464. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/cell_decryptor.rs +0 -0
  465. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/apple.rs +0 -0
  466. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/cng.rs +0 -0
  467. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/der.rs +0 -0
  468. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/mod.rs +0 -0
  469. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/openssl.rs +0 -0
  470. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/crypto/unsupported.rs +0 -0
  471. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/describe_parameter_encryption.rs +0 -0
  472. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/encryption/aead_aes_256_cbc_hmac_sha256.rs +0 -0
  473. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/encryption/cell.rs +0 -0
  474. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/encryption/mod.rs +0 -0
  475. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/error.rs +0 -0
  476. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/keystore/certificate.rs +0 -0
  477. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/keystore/mod.rs +0 -0
  478. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/mock.rs +0 -0
  479. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/mod.rs +0 -0
  480. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/query_metadata_cache.rs +0 -0
  481. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/security_context.rs +0 -0
  482. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/spn.rs +0 -0
  483. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/unix/gssapi_context.rs +0 -0
  484. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/unix/gssapi_ffi.rs +0 -0
  485. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/unix/mod.rs +0 -0
  486. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/windows/mod.rs +0 -0
  487. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/windows/sspi_context.rs +0 -0
  488. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/security/windows/sspi_ffi.rs +0 -0
  489. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/sql_identifier.rs +0 -0
  490. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/test_client_support.rs +0 -0
  491. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/test_packet_support.rs +0 -0
  492. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/data_classification.rs +0 -0
  493. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/fed_auth_info.rs +0 -0
  494. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/login_ack.rs +0 -0
  495. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/col_info_parser.rs +0 -0
  496. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/colmetadata_parser.rs +0 -0
  497. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/common.rs +0 -0
  498. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/data_classification_parser.rs +0 -0
  499. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/done_parser.rs +0 -0
  500. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/envchange_parser.rs +0 -0
  501. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/error_parser.rs +0 -0
  502. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/featureext_parser.rs +0 -0
  503. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/fedauth_parser.rs +0 -0
  504. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/info_parser.rs +0 -0
  505. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/loginack_parser.rs +0 -0
  506. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/mod.rs +0 -0
  507. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/nbcrow_parser.rs +0 -0
  508. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/order_parser.rs +0 -0
  509. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/returnstatus_parser.rs +0 -0
  510. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/returnvalue_parser.rs +0 -0
  511. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/row_parser.rs +0 -0
  512. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/session_state_parser.rs +0 -0
  513. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/sspi_parser.rs +0 -0
  514. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/parsers/tab_name_parser.rs +0 -0
  515. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/tokenitems.rs +0 -0
  516. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token/tokens.rs +0 -0
  517. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/token.rs +0 -0
  518. {arrowsql-0.2.0 → arrowsql-0.3.0}/vendor/mssql-tds/src/trace_context.rs +0 -0
@@ -8,12 +8,76 @@ Version numbers in this project are deliberately three different things:
8
8
 
9
9
  | what | value | meaning |
10
10
  |---|---|---|
11
- | distribution `arrowsql` | 0.2.0 | this project's release number (`pyproject.toml`) |
11
+ | distribution `arrowsql` | 0.3.0 | this project's release number (`pyproject.toml`) |
12
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
13
  | `arrowsql.ddbc_bindings.__version__` | 1.0.0 | version of the Rust binding contract (`docs/CONTRACT.md`) |
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [0.3.0] - 2026-11-07
18
+
19
+ ### Added
20
+
21
+ - `crates/arrowsql-core`: the driver core as a Rust crate without pyo3
22
+ (connect, execute, fetch, Arrow decoding, pooling), with a public API for
23
+ other Rust crates: `Connection::connect` / `execute`, `Statement::next_batch`
24
+ / `into_reader`, and `read_arrow_stream(options, query, Partitioning,
25
+ ReadOptions)`, a cancellable, `Send` Arrow `RecordBatchReader` over a
26
+ partitioned parallel read. The Python extension is a pyo3 layer over it; no
27
+ behaviour change for Python.
28
+ - `arrowsql-core`: the partitions of a read as separate readers or Arrow C
29
+ streams. `plan_partitions` returns the planned `Slice`s, each opens on its
30
+ own connection (`Slice::open`, `Slice::open_ffi_stream`), so Spark tasks or
31
+ pyarrow in another shared library read them zero-copy;
32
+ `ParallelReader::into_ffi_stream` / `StatementReader::into_ffi_stream`
33
+ export the merged and single-statement readers the same way.
34
+ - `crates/arrowsql-rowcount`: a pure-Rust example and integration test of the
35
+ core API (single, merged parallel and per-partition Arrow C stream reads).
36
+ - Process-wide DNS cache for connects (`DnsCacheTTL=<seconds>` keyword, env
37
+ `ARROWSQL_DNS_CACHE_TTL`, default 300 s, 0 disables). A host that resolved
38
+ once is not resolved again for every connection (Spark tasks, parallel read
39
+ slices, pool members, reconnects), like the JDBC driver's long-lived cache.
40
+ An expired entry is served at once while one background thread refreshes it
41
+ (up to an hour past its TTL), so a slow or failing resolver ("Temporary
42
+ failure in name resolution") no longer costs each connection seconds or a
43
+ failed connect. Concurrent lookups of one host share a single resolver call;
44
+ each resolver call is bounded (`ARROWSQL_DNS_RESOLVE_TIMEOUT`, default 10 s)
45
+ and a temporary failure is retried once. Failures are never cached; if no
46
+ cached address accepts, the entry is dropped and the host is resolved once
47
+ more. IP literals and connection diagnostics bypass the cache.
48
+ `ddbc_bindings.dns_cache_stats()` reports its counters. Vendored mssql-tds
49
+ patch 15.
50
+
51
+ ### Changed
52
+
53
+ - `read_arrow` / `read_arrow_stream`: slice planning, the MIN/MAX and catalog
54
+ probes, the worker threads and the merge run in Rust (`arrowsql-core`);
55
+ `arrow_parallel.py` only checks arguments. Same plans, rows and exception
56
+ classes as before (parity tests against the previous implementation in
57
+ `tests/common_issues/test_rs_read_arrow_parity.py`); invalid
58
+ `partition_bounds` now fail before the first connection is opened. The
59
+ UTF-8 transfer rewrite (`utf8_strings`) moved to Rust as well.
60
+ - Rust dependents of `arrowsql-core`: the core declares no global allocator
61
+ (mimalloc is the `ddbc_bindings` default feature `mimalloc`), and both
62
+ crates depend on `vendor/mssql-tds` by path instead of a `[patch]`, so a git
63
+ dependency on the core builds the patched TDS crate without a patch section
64
+ of its own. Workspace-wide `cargo test` / `clippy` take `--exclude mssql-tds`.
65
+
66
+ ### Fixed
67
+
68
+ - `write_arrow(..., workers > 1)` accepts an iterable of record batches (list, generator, objects
69
+ with `__arrow_c_array__`) like `workers=1`, without pyarrow (r5 F9).
70
+ - `write_arrow(..., workers > 1)` reads a native `cursor.arrow_stream()` on demand instead of
71
+ draining it into memory before the workers start; the drain remains for single-connection
72
+ `bulkcopy_arrow`, where it avoids a deadlock (r5 F15).
73
+ - Async `executemany` with a leading NULL decimal no longer declares the whole
74
+ batch `decimal(18,10)` (later values lost digits).
75
+ - Async manual-commit `BEGIN` obeys cancellation.
76
+ - After a server-side rollback under XACT_ABORT, writes stay rejected (25000)
77
+ until `commit()`/`rollback()`: the guard sees through comments, CTEs and
78
+ `BEGIN TRY` blocks, is no longer consumed by the first rejection and also
79
+ covers the async API.
80
+
17
81
  ## [0.2.0] - 2026-11-01
18
82
 
19
83
  ### Added
@@ -20,7 +20,8 @@ anyone else can just set `DB_CONNECTION_STRING`.
20
20
  ```bash
21
21
  python -m pytest -q --timeout 120 tests/common_issues tests/port
22
22
  python scripts/check_upstream_baseline.py # vendored upstream suite vs tests/upstream_passing_baseline.txt
23
- cargo test --lib
23
+ cargo test --workspace --exclude mssql-tds --lib
24
+ cargo test -p arrowsql-core --test live && cargo test -p arrowsql-rowcount # Rust API, needs DB_CONNECTION_STRING
24
25
  ```
25
26
 
26
27
  Scope and rules for the three suites: [docs/TEST_SCOPE.md](docs/TEST_SCOPE.md). A new
@@ -29,7 +30,7 @@ add it to `tests/upstream_excluded.txt` with a one-line reason.
29
30
 
30
31
  ## Code
31
32
 
32
- - `cargo clippy --all-targets` should not add warnings; run `cargo fmt` on files you touch.
33
+ - `cargo clippy --workspace --exclude mssql-tds --all-targets` should not add warnings; run `cargo fmt` on files you touch.
33
34
  - Edits to the vendored Python layer (`python/arrowsql`) and to `vendor/mssql-tds`
34
35
  are marked `RUST-PORT` and listed in `docs/PYTHON_LAYER_CHANGES.md` /
35
36
  `vendor/mssql-tds/VENDOR.md`. Keep upstream's lines unchanged where you can.
@@ -78,6 +78,30 @@ dependencies = [
78
78
  "bitflags",
79
79
  ]
80
80
 
81
+ [[package]]
82
+ name = "arrowsql-core"
83
+ version = "0.3.0"
84
+ dependencies = [
85
+ "arrow-array",
86
+ "arrow-buffer",
87
+ "arrow-schema",
88
+ "async-trait",
89
+ "encoding_rs",
90
+ "log",
91
+ "mssql-tds",
92
+ "parking_lot",
93
+ "tokio",
94
+ "uuid",
95
+ ]
96
+
97
+ [[package]]
98
+ name = "arrowsql-rowcount"
99
+ version = "0.3.0"
100
+ dependencies = [
101
+ "arrow-array",
102
+ "arrowsql-core",
103
+ ]
104
+
81
105
  [[package]]
82
106
  name = "asn1-rs"
83
107
  version = "0.7.2"
@@ -274,13 +298,15 @@ checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06"
274
298
 
275
299
  [[package]]
276
300
  name = "ddbc_bindings"
277
- version = "0.2.0"
301
+ version = "0.3.0"
278
302
  dependencies = [
279
303
  "arrow-array",
280
304
  "arrow-buffer",
281
305
  "arrow-schema",
306
+ "arrowsql-core",
282
307
  "async-trait",
283
308
  "encoding_rs",
309
+ "log",
284
310
  "mimalloc",
285
311
  "mssql-tds",
286
312
  "parking_lot",
@@ -1,29 +1,45 @@
1
1
  [package]
2
2
  name = "ddbc_bindings"
3
- version = "0.2.0"
3
+ version = "0.3.0"
4
4
  edition = "2024"
5
5
  license = "MIT"
6
6
  description = "Rust (PyO3 + mssql-tds) replacement for mssql-python's ODBC-based ddbc_bindings"
7
7
  publish = false
8
8
  readme = "README.md"
9
9
 
10
+ [workspace]
11
+ members = ["crates/*"]
12
+ # vendor/mssql-tds is a member too (a path dependency under the root), but its
13
+ # tests need dev-dependencies the vendored copy leaves out: workspace-wide
14
+ # cargo test / clippy runs pass `--exclude mssql-tds`.
15
+ resolver = "3"
16
+
10
17
  [lib]
11
18
  name = "ddbc_bindings"
12
19
  crate-type = ["cdylib", "rlib"]
13
20
 
14
21
  [features]
22
+ default = ["mimalloc"]
23
+ # mimalloc as the process allocator of the extension module (the core
24
+ # declares none, so a Rust dependent keeps its own).
25
+ mimalloc = ["dep:mimalloc"]
15
26
  # Legacy TLS: native-tls (OpenSSL) + OpenSSL Always Encrypted crypto instead of rustls.
16
27
  # Adds ~8 MB (libssl, libcrypto, libzstd) to the wheel. Build: maturin build --features native-tls
17
- native-tls = ["mssql-tds/native-tls-backend"]
28
+ native-tls = ["mssql-tds/native-tls-backend", "arrowsql-core/native-tls"]
18
29
 
19
30
  [dependencies]
20
31
  pyo3 = { version = "0.29.0", features = ["extension-module"] }
21
- # Microsoft's native TDS implementation (MIT). Pinned: the API is pre-1.0.
22
- mssql-tds = { git = "https://github.com/microsoft/mssql-rs", rev = "6b6b48ecbbbdad297039d1641e2be4775eed998b", default-features = false, features = ["gssapi", "rustls-tls"] }
32
+ # Connect/execute/fetch, Arrow decoding and the parallel read, without pyo3.
33
+ arrowsql-core = { path = "crates/arrowsql-core" }
34
+ log = "0.4"
35
+ # Microsoft's native TDS implementation (MIT), vendored with local patches
36
+ # (vendor/mssql-tds/VENDOR.md). A path dependency, so crates that depend on
37
+ # arrowsql-core by git get the patched copy without a [patch] of their own.
38
+ mssql-tds = { path = "vendor/mssql-tds", default-features = false, features = ["gssapi", "rustls-tls"] }
23
39
  tokio = { version = "1", features = ["rt", "rt-multi-thread", "net", "time", "sync", "macros"] }
24
40
  parking_lot = "0.12"
25
41
  uuid = "1"
26
- mimalloc = { version = "0.1", default-features = false }
42
+ mimalloc = { version = "0.1", default-features = false, optional = true }
27
43
  # Arrow arrays + the C Data / C Stream interfaces (src/arrow/). Columns are
28
44
  # built with our own buffers and only wrapped as arrow-rs arrays for export.
29
45
  arrow-array = { version = "60", default-features = false, features = ["ffi"] }
@@ -37,13 +53,13 @@ async-trait = "0.1"
37
53
  # Windows: in-tree Schannel TLS (msodbcsql's stack) instead of rustls, which fails the
38
54
  # handshake with SQL Server's self-generated certificate on Windows.
39
55
  [target.'cfg(windows)'.dependencies]
40
- mssql-tds = { git = "https://github.com/microsoft/mssql-rs", rev = "6b6b48ecbbbdad297039d1641e2be4775eed998b", default-features = false, features = ["gssapi", "rustls-tls", "tls-schannel-direct-on-windows"] }
56
+ mssql-tds = { path = "vendor/mssql-tds", default-features = false, features = ["gssapi", "rustls-tls", "tls-schannel-direct-on-windows"] }
41
57
 
42
58
  # musl cannot load a shared library that uses initial-exec TLS through dlopen
43
59
  # ("initial-exec TLS resolves to dynamic definition"): mimalloc's thread-local
44
60
  # heap pointer has to use the local-dynamic model there.
45
61
  [target.'cfg(target_env = "musl")'.dependencies]
46
- mimalloc = { version = "0.1", default-features = false, features = ["local_dynamic_tls"] }
62
+ mimalloc = { version = "0.1", default-features = false, features = ["local_dynamic_tls"], optional = true }
47
63
 
48
64
  [build-dependencies]
49
65
  pyo3-build-config = "0.29.0"
@@ -65,11 +81,6 @@ panic = "unwind"
65
81
  # Stripped symbols: smaller .so, no effect on speed (no runtime symbolication needed).
66
82
  strip = true
67
83
 
68
- # Microsoft's mssql-tds at the pinned rev, with one local patch (see
69
- # vendor/mssql-tds/VENDOR.md). Remove when the fix is upstream.
70
- [patch."https://github.com/microsoft/mssql-rs"]
71
- mssql-tds = { path = "vendor/mssql-tds" }
72
-
73
84
  # Hot crates at opt-level 3: the bindings with the inlined mssql-tds, pyo3 and
74
85
  # tokio, plus allocator, text decoding, buffers and record-layer crypto.
75
86
  [profile.release.package.mimalloc]
@@ -94,6 +105,8 @@ opt-level = 3
94
105
  opt-level = 3
95
106
  [profile.release.package.ddbc_bindings]
96
107
  opt-level = 3
108
+ [profile.release.package.arrowsql-core]
109
+ opt-level = 3
97
110
  [profile.release.package.mssql-tds]
98
111
  opt-level = 3
99
112
  [profile.release.package.pyo3]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arrowsql
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Operating System :: POSIX :: Linux
@@ -61,6 +61,8 @@ Project-URL: Upstream, https://github.com/microsoft/mssql-python
61
61
  - **2-7x faster than mssql-python**, up to 10x faster than pyodbc on large reads.
62
62
  - **Arrow out of the box:** results go straight to DuckDB, polars, pyarrow and Delta, no pyarrow required.
63
63
  - **Parallel reads and bulk loads** over several connections.
64
+ - **Rust core crate:** `crates/arrowsql-core` (no pyo3) exposes connect, execute and the parallel Arrow read to other Rust programs.
65
+ - **DNS cache:** resolved hosts are reused and served stale while refreshing (`DnsCacheTTL=<seconds>`, default 300, `0` disables).
64
66
  - **No ODBC driver:** native TDS in Rust, zero required dependencies, wheels for Linux, macOS and Windows.
65
67
  - **Drop-in:** same DB-API, same connection strings; `import mssql_python` keeps working.
66
68
 
@@ -20,6 +20,8 @@
20
20
  - **2-7x faster than mssql-python**, up to 10x faster than pyodbc on large reads.
21
21
  - **Arrow out of the box:** results go straight to DuckDB, polars, pyarrow and Delta, no pyarrow required.
22
22
  - **Parallel reads and bulk loads** over several connections.
23
+ - **Rust core crate:** `crates/arrowsql-core` (no pyo3) exposes connect, execute and the parallel Arrow read to other Rust programs.
24
+ - **DNS cache:** resolved hosts are reused and served stale while refreshing (`DnsCacheTTL=<seconds>`, default 300, `0` disables).
23
25
  - **No ODBC driver:** native TDS in Rust, zero required dependencies, wheels for Linux, macOS and Windows.
24
26
  - **Drop-in:** same DB-API, same connection strings; `import mssql_python` keeps working.
25
27
 
@@ -0,0 +1,31 @@
1
+ [package]
2
+ name = "arrowsql-core"
3
+ version = "0.3.0"
4
+ edition = "2024"
5
+ license = "MIT"
6
+ description = "SQL Server over TDS into Arrow record batches: the Python-free core of arrowsql"
7
+ publish = false
8
+
9
+ [features]
10
+ # Legacy TLS: native-tls (OpenSSL) + OpenSSL Always Encrypted crypto instead of rustls.
11
+ native-tls = ["mssql-tds/native-tls-backend"]
12
+
13
+ [dependencies]
14
+ # Microsoft's native TDS implementation (MIT), vendored with local patches
15
+ # (vendor/mssql-tds/VENDOR.md): a path dependency, so a git dependent of this
16
+ # crate builds the patched copy without a [patch] section.
17
+ mssql-tds = { path = "../../vendor/mssql-tds", default-features = false, features = ["gssapi", "rustls-tls"] }
18
+ tokio = { version = "1", features = ["rt", "rt-multi-thread", "net", "time", "sync", "macros"] }
19
+ parking_lot = "0.12"
20
+ uuid = "1"
21
+ arrow-array = { version = "60", default-features = false, features = ["ffi"] }
22
+ arrow-buffer = "60"
23
+ arrow-schema = { version = "60", features = ["ffi"] }
24
+ encoding_rs = "0.8"
25
+ async-trait = "0.1"
26
+ log = "0.4"
27
+
28
+ # Windows: in-tree Schannel TLS (msodbcsql's stack) instead of rustls, which fails the
29
+ # handshake with SQL Server's self-generated certificate on Windows.
30
+ [target.'cfg(windows)'.dependencies]
31
+ mssql-tds = { path = "../../vendor/mssql-tds", default-features = false, features = ["gssapi", "rustls-tls", "tls-schannel-direct-on-windows"] }