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.
Files changed (465) hide show
  1. arrowsql-0.1.0/.cargo/config.toml +7 -0
  2. arrowsql-0.1.0/.gitattributes +6 -0
  3. arrowsql-0.1.0/.gitignore +15 -0
  4. arrowsql-0.1.0/CHANGELOG.md +83 -0
  5. arrowsql-0.1.0/CONTRIBUTING.md +45 -0
  6. arrowsql-0.1.0/Cargo.lock +1874 -0
  7. arrowsql-0.1.0/Cargo.toml +99 -0
  8. arrowsql-0.1.0/LICENSE +21 -0
  9. arrowsql-0.1.0/LICENSE.upstream-mssql-python +47 -0
  10. arrowsql-0.1.0/PKG-INFO +146 -0
  11. arrowsql-0.1.0/README.md +104 -0
  12. arrowsql-0.1.0/docs/AGENT_MODE.md +52 -0
  13. arrowsql-0.1.0/docs/ARCHITECTURE.md +344 -0
  14. arrowsql-0.1.0/docs/ARROW_ODBC_RESEARCH.md +333 -0
  15. arrowsql-0.1.0/docs/ARROW_PLAN.md +78 -0
  16. arrowsql-0.1.0/docs/ASYNC.md +212 -0
  17. arrowsql-0.1.0/docs/BENCHMARK_SUMMARY.md +74 -0
  18. arrowsql-0.1.0/docs/CONTRACT.md +87 -0
  19. arrowsql-0.1.0/docs/EXPORT_RESEARCH.md +294 -0
  20. arrowsql-0.1.0/docs/FEATURES.md +68 -0
  21. arrowsql-0.1.0/docs/FREE_THREADED.md +111 -0
  22. arrowsql-0.1.0/docs/PACKAGING.md +356 -0
  23. arrowsql-0.1.0/docs/PERFORMANCE_RESEARCH.md +357 -0
  24. arrowsql-0.1.0/docs/PLATFORMS_AND_CONNECTION.md +65 -0
  25. arrowsql-0.1.0/docs/PYTHON_LAYER_CHANGES.md +322 -0
  26. arrowsql-0.1.0/docs/ROADMAP.md +58 -0
  27. arrowsql-0.1.0/docs/TEST_SCOPE.md +37 -0
  28. arrowsql-0.1.0/docs/UPSTREAM_BUGS_FOUND.md +95 -0
  29. arrowsql-0.1.0/docs/UPSTREAM_ISSUES.md +87 -0
  30. arrowsql-0.1.0/docs/assets/icon.svg +1 -0
  31. arrowsql-0.1.0/docs/assets/logo-dark-static.svg +1 -0
  32. arrowsql-0.1.0/docs/assets/logo-dark.svg +10 -0
  33. arrowsql-0.1.0/docs/assets/logo-static.svg +1 -0
  34. arrowsql-0.1.0/docs/assets/logo.svg +10 -0
  35. arrowsql-0.1.0/examples/README.md +19 -0
  36. arrowsql-0.1.0/examples/_demo.py +60 -0
  37. arrowsql-0.1.0/examples/agent_mode.py +45 -0
  38. arrowsql-0.1.0/examples/arrow_duckdb.py +64 -0
  39. arrowsql-0.1.0/examples/odbc2deltalake_sync.py +101 -0
  40. arrowsql-0.1.0/examples/write_arrow.py +44 -0
  41. arrowsql-0.1.0/pyproject.toml +72 -0
  42. arrowsql-0.1.0/python/arrowsql/__init__.py +653 -0
  43. arrowsql-0.1.0/python/arrowsql/_rust_auth.py +170 -0
  44. arrowsql-0.1.0/python/arrowsql/_server_sqlstate.py +11 -0
  45. arrowsql-0.1.0/python/arrowsql/_utf8_strings.py +78 -0
  46. arrowsql-0.1.0/python/arrowsql/agent.py +620 -0
  47. arrowsql-0.1.0/python/arrowsql/aio.py +533 -0
  48. arrowsql-0.1.0/python/arrowsql/arrow_parallel.py +464 -0
  49. arrowsql-0.1.0/python/arrowsql/async_query/__init__.py +40 -0
  50. arrowsql-0.1.0/python/arrowsql/async_query/_connection_context.py +39 -0
  51. arrowsql-0.1.0/python/arrowsql/async_query/_native.py +24 -0
  52. arrowsql-0.1.0/python/arrowsql/async_query/async_connection.py +160 -0
  53. arrowsql-0.1.0/python/arrowsql/async_query/async_cursor.py +225 -0
  54. arrowsql-0.1.0/python/arrowsql/async_query/async_execute.py +113 -0
  55. arrowsql-0.1.0/python/arrowsql/async_query/async_fetch.py +153 -0
  56. arrowsql-0.1.0/python/arrowsql/async_query/exception_translator.py +132 -0
  57. arrowsql-0.1.0/python/arrowsql/auth.py +913 -0
  58. arrowsql-0.1.0/python/arrowsql/bulk_parallel.py +385 -0
  59. arrowsql-0.1.0/python/arrowsql/connection.py +2377 -0
  60. arrowsql-0.1.0/python/arrowsql/connection_string_builder.py +114 -0
  61. arrowsql-0.1.0/python/arrowsql/connection_string_parser.py +417 -0
  62. arrowsql-0.1.0/python/arrowsql/constants.py +701 -0
  63. arrowsql-0.1.0/python/arrowsql/cursor.py +4516 -0
  64. arrowsql-0.1.0/python/arrowsql/db_connection.py +98 -0
  65. arrowsql-0.1.0/python/arrowsql/ddbc_bindings.pyi +283 -0
  66. arrowsql-0.1.0/python/arrowsql/decimal_config.py +98 -0
  67. arrowsql-0.1.0/python/arrowsql/exceptions.py +378 -0
  68. arrowsql-0.1.0/python/arrowsql/helpers.py +436 -0
  69. arrowsql-0.1.0/python/arrowsql/logging.py +700 -0
  70. arrowsql-0.1.0/python/arrowsql/mssql_python.pyi +579 -0
  71. arrowsql-0.1.0/python/arrowsql/odbc_provider.py +269 -0
  72. arrowsql-0.1.0/python/arrowsql/parameter_helper.py +442 -0
  73. arrowsql-0.1.0/python/arrowsql/perf_timer.py +286 -0
  74. arrowsql-0.1.0/python/arrowsql/pooling.py +147 -0
  75. arrowsql-0.1.0/python/arrowsql/py.typed +1 -0
  76. arrowsql-0.1.0/python/arrowsql/row.py +462 -0
  77. arrowsql-0.1.0/python/arrowsql/type.py +160 -0
  78. arrowsql-0.1.0/python/mssql_python/__init__.py +39 -0
  79. arrowsql-0.1.0/requirements-dev.txt +12 -0
  80. arrowsql-0.1.0/scripts/bench_reproduce.sh +309 -0
  81. arrowsql-0.1.0/scripts/build.sh +21 -0
  82. arrowsql-0.1.0/scripts/check_upstream_baseline.py +75 -0
  83. arrowsql-0.1.0/scripts/ci/install-sqlserver-windows.ps1 +49 -0
  84. arrowsql-0.1.0/scripts/codex_review.sh +18 -0
  85. arrowsql-0.1.0/scripts/env.sh +24 -0
  86. arrowsql-0.1.0/scripts/load_taxi.py +93 -0
  87. arrowsql-0.1.0/scripts/overlay_upstream_binding.sh +33 -0
  88. arrowsql-0.1.0/scripts/release_rustflags.sh +7 -0
  89. arrowsql-0.1.0/scripts/run_tests.py +61 -0
  90. arrowsql-0.1.0/scripts/setup_tls_cert.sh +41 -0
  91. arrowsql-0.1.0/scripts/test_overlay.sh +12 -0
  92. arrowsql-0.1.0/scripts/wheel_size.sh +95 -0
  93. arrowsql-0.1.0/src/agent/fmt.rs +114 -0
  94. arrowsql-0.1.0/src/agent/mod.rs +268 -0
  95. arrowsql-0.1.0/src/agent/render.rs +679 -0
  96. arrowsql-0.1.0/src/agent/sqltype.rs +75 -0
  97. arrowsql-0.1.0/src/aio/connection.rs +478 -0
  98. arrowsql-0.1.0/src/aio/convert.rs +231 -0
  99. arrowsql-0.1.0/src/aio/hub.rs +293 -0
  100. arrowsql-0.1.0/src/aio/mod.rs +25 -0
  101. arrowsql-0.1.0/src/aio/pool.rs +376 -0
  102. arrowsql-0.1.0/src/aio/session.rs +847 -0
  103. arrowsql-0.1.0/src/arrow/export.rs +685 -0
  104. arrowsql-0.1.0/src/arrow/mod.rs +150 -0
  105. arrowsql-0.1.0/src/arrow/plan.rs +135 -0
  106. arrowsql-0.1.0/src/arrow/sink.rs +699 -0
  107. arrowsql-0.1.0/src/bulk/arrow_encode.rs +823 -0
  108. arrowsql-0.1.0/src/bulk/arrow_source.rs +74 -0
  109. arrowsql-0.1.0/src/bulk/arrow_wire.rs +431 -0
  110. arrowsql-0.1.0/src/bulk/mod.rs +309 -0
  111. arrowsql-0.1.0/src/bulk/rows.rs +896 -0
  112. arrowsql-0.1.0/src/bulk/settings.rs +179 -0
  113. arrowsql-0.1.0/src/bulk/wire.rs +359 -0
  114. arrowsql-0.1.0/src/catalog.rs +328 -0
  115. arrowsql-0.1.0/src/connection.rs +749 -0
  116. arrowsql-0.1.0/src/connstr.rs +382 -0
  117. arrowsql-0.1.0/src/consts.rs +70 -0
  118. arrowsql-0.1.0/src/decode/binary.rs +51 -0
  119. arrowsql-0.1.0/src/decode/buffer.rs +366 -0
  120. arrowsql-0.1.0/src/decode/describe.rs +223 -0
  121. arrowsql-0.1.0/src/decode/hidden.rs +123 -0
  122. arrowsql-0.1.0/src/decode/mod.rs +19 -0
  123. arrowsql-0.1.0/src/decode/numeric.rs +47 -0
  124. arrowsql-0.1.0/src/decode/python.rs +350 -0
  125. arrowsql-0.1.0/src/decode/temporal.rs +177 -0
  126. arrowsql-0.1.0/src/decode/text.rs +72 -0
  127. arrowsql-0.1.0/src/diag.rs +180 -0
  128. arrowsql-0.1.0/src/getinfo.rs +229 -0
  129. arrowsql-0.1.0/src/lib.rs +181 -0
  130. arrowsql-0.1.0/src/logging.rs +60 -0
  131. arrowsql-0.1.0/src/params/batch.rs +664 -0
  132. arrowsql-0.1.0/src/params/mod.rs +297 -0
  133. arrowsql-0.1.0/src/params/null_types.rs +69 -0
  134. arrowsql-0.1.0/src/params/placeholders.rs +197 -0
  135. arrowsql-0.1.0/src/params/py_types.rs +1832 -0
  136. arrowsql-0.1.0/src/params/pyformat.rs +111 -0
  137. arrowsql-0.1.0/src/params/udt.rs +195 -0
  138. arrowsql-0.1.0/src/pooling.rs +336 -0
  139. arrowsql-0.1.0/src/rowfactory.rs +70 -0
  140. arrowsql-0.1.0/src/runtime.rs +279 -0
  141. arrowsql-0.1.0/src/statement/batch_rpc.rs +304 -0
  142. arrowsql-0.1.0/src/statement/cancel.rs +117 -0
  143. arrowsql-0.1.0/src/statement/cursor.rs +667 -0
  144. arrowsql-0.1.0/src/statement/exec.rs +605 -0
  145. arrowsql-0.1.0/src/statement/mod.rs +218 -0
  146. arrowsql-0.1.0/src/statement/odbc.rs +451 -0
  147. arrowsql-0.1.0/src/statement/wire.rs +278 -0
  148. arrowsql-0.1.0/src/types.rs +124 -0
  149. arrowsql-0.1.0/src/utf8_wrap.rs +224 -0
  150. arrowsql-0.1.0/tests/common_issues/conftest.py +62 -0
  151. arrowsql-0.1.0/tests/common_issues/ported/LICENSE_ctds.txt +21 -0
  152. arrowsql-0.1.0/tests/common_issues/ported/LICENSE_dotnet_sqlclient.txt +21 -0
  153. arrowsql-0.1.0/tests/common_issues/ported/LICENSE_go_mssqldb.txt +28 -0
  154. arrowsql-0.1.0/tests/common_issues/ported/LICENSE_sqlalchemy.txt +19 -0
  155. arrowsql-0.1.0/tests/common_issues/ported/README.md +15 -0
  156. arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_cursor_fetch.py +229 -0
  157. arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_executemany.py +128 -0
  158. arrowsql-0.1.0/tests/common_issues/ported/test_port_ctds_transactions.py +194 -0
  159. arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_async_threads.py +268 -0
  160. arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_errors_values.py +211 -0
  161. arrowsql-0.1.0/tests/common_issues/ported/test_port_fastmssql_lifecycle_pool.py +185 -0
  162. arrowsql-0.1.0/tests/common_issues/ported/test_port_go_mssqldb_bulkcopy.py +278 -0
  163. arrowsql-0.1.0/tests/common_issues/ported/test_port_go_mssqldb_xact_guid.py +165 -0
  164. arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_jdbc_bigint_guid.py +209 -0
  165. arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_jdbc_temporal_params.py +161 -0
  166. arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_rs_arrow_bulkcopy.py +309 -0
  167. arrowsql-0.1.0/tests/common_issues/ported/test_port_mssql_rs_bulkcopy.py +226 -0
  168. arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_bulkcopy_paths.py +110 -0
  169. arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_qmark_substitution.py +123 -0
  170. arrowsql-0.1.0/tests/common_issues/ported/test_port_pymssql_types_procs.py +142 -0
  171. arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_connection.py +256 -0
  172. arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_cursor_results.py +216 -0
  173. arrowsql-0.1.0/tests/common_issues/ported/test_port_pyodbc_types.py +98 -0
  174. arrowsql-0.1.0/tests/common_issues/ported/test_port_rust_mssql_driver_bulkcopy.py +367 -0
  175. arrowsql-0.1.0/tests/common_issues/ported/test_port_rust_mssql_driver_param_echo.py +136 -0
  176. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_catalog.py +173 -0
  177. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_identity_sequence.py +210 -0
  178. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_query.py +204 -0
  179. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlalchemy_types.py +120 -0
  180. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlclient_bulkcopy.py +328 -0
  181. arrowsql-0.1.0/tests/common_issues/ported/test_port_sqlclient_scalar_commands.py +180 -0
  182. arrowsql-0.1.0/tests/common_issues/ported/test_port_tedious_protocol.py +357 -0
  183. arrowsql-0.1.0/tests/common_issues/ported/test_port_tedious_statements.py +82 -0
  184. arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_bulk.py +173 -0
  185. arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_login_password.py +58 -0
  186. arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_query_types.py +170 -0
  187. arrowsql-0.1.0/tests/common_issues/ported/test_port_tiberius_results_transactions.py +205 -0
  188. arrowsql-0.1.0/tests/common_issues/rs_dtypes.py +519 -0
  189. arrowsql-0.1.0/tests/common_issues/test_binary_guid.py +357 -0
  190. arrowsql-0.1.0/tests/common_issues/test_connection_strings.py +367 -0
  191. arrowsql-0.1.0/tests/common_issues/test_dead_connection.py +335 -0
  192. arrowsql-0.1.0/tests/common_issues/test_decimal_numeric.py +273 -0
  193. arrowsql-0.1.0/tests/common_issues/test_executemany.py +342 -0
  194. arrowsql-0.1.0/tests/common_issues/test_g1_pyformat_scanner.py +186 -0
  195. arrowsql-0.1.0/tests/common_issues/test_integers_bool_float.py +271 -0
  196. arrowsql-0.1.0/tests/common_issues/test_issue_581_sqlstate.py +421 -0
  197. arrowsql-0.1.0/tests/common_issues/test_large_values.py +338 -0
  198. arrowsql-0.1.0/tests/common_issues/test_messages_errors.py +257 -0
  199. arrowsql-0.1.0/tests/common_issues/test_multiple_results.py +284 -0
  200. arrowsql-0.1.0/tests/common_issues/test_nulls_typing.py +278 -0
  201. arrowsql-0.1.0/tests/common_issues/test_row_access.py +342 -0
  202. arrowsql-0.1.0/tests/common_issues/test_rs_agent_mode.py +573 -0
  203. arrowsql-0.1.0/tests/common_issues/test_rs_aio.py +556 -0
  204. arrowsql-0.1.0/tests/common_issues/test_rs_aio_pool_semantics.py +349 -0
  205. arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_aio.py +108 -0
  206. arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_exotic.py +476 -0
  207. arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_paths.py +261 -0
  208. arrowsql-0.1.0/tests/common_issues/test_rs_all_data_types_special.py +768 -0
  209. arrowsql-0.1.0/tests/common_issues/test_rs_arith_errors.py +225 -0
  210. arrowsql-0.1.0/tests/common_issues/test_rs_arrow_native.py +402 -0
  211. arrowsql-0.1.0/tests/common_issues/test_rs_arrow_stream_close.py +165 -0
  212. arrowsql-0.1.0/tests/common_issues/test_rs_arrow_type_mapping.py +371 -0
  213. arrowsql-0.1.0/tests/common_issues/test_rs_auth_keywords.py +294 -0
  214. arrowsql-0.1.0/tests/common_issues/test_rs_batch_parsing.py +174 -0
  215. arrowsql-0.1.0/tests/common_issues/test_rs_bigint_overflow_agg.py +225 -0
  216. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_decimal_width.py +59 -0
  217. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_native.py +428 -0
  218. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_native_rows.py +288 -0
  219. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_parallel.py +146 -0
  220. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_parallel_rows.py +249 -0
  221. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_rows_pipeline.py +326 -0
  222. arrowsql-0.1.0/tests/common_issues/test_rs_bulk_serializer_chunks.py +48 -0
  223. arrowsql-0.1.0/tests/common_issues/test_rs_cancel.py +279 -0
  224. arrowsql-0.1.0/tests/common_issues/test_rs_char_padding.py +215 -0
  225. arrowsql-0.1.0/tests/common_issues/test_rs_client_cpu_paths.py +91 -0
  226. arrowsql-0.1.0/tests/common_issues/test_rs_collation_case.py +286 -0
  227. arrowsql-0.1.0/tests/common_issues/test_rs_core_regressions.py +548 -0
  228. arrowsql-0.1.0/tests/common_issues/test_rs_cte_recursion.py +346 -0
  229. arrowsql-0.1.0/tests/common_issues/test_rs_database_context.py +244 -0
  230. arrowsql-0.1.0/tests/common_issues/test_rs_date_strings_dateformat.py +250 -0
  231. arrowsql-0.1.0/tests/common_issues/test_rs_datetimeoffset_deep.py +341 -0
  232. arrowsql-0.1.0/tests/common_issues/test_rs_decimal_param_inference.py +269 -0
  233. arrowsql-0.1.0/tests/common_issues/test_rs_decode_fastpaths.py +195 -0
  234. arrowsql-0.1.0/tests/common_issues/test_rs_defaults_computed.py +241 -0
  235. arrowsql-0.1.0/tests/common_issues/test_rs_description_types.py +320 -0
  236. arrowsql-0.1.0/tests/common_issues/test_rs_duckdb_integration.py +269 -0
  237. arrowsql-0.1.0/tests/common_issues/test_rs_error_mid_resultset.py +203 -0
  238. arrowsql-0.1.0/tests/common_issues/test_rs_executemany_types.py +114 -0
  239. arrowsql-0.1.0/tests/common_issues/test_rs_fetch_sizes_arraysize.py +270 -0
  240. arrowsql-0.1.0/tests/common_issues/test_rs_float_real_edges.py +246 -0
  241. arrowsql-0.1.0/tests/common_issues/test_rs_for_json.py +237 -0
  242. arrowsql-0.1.0/tests/common_issues/test_rs_g3_decode_encode.py +97 -0
  243. arrowsql-0.1.0/tests/common_issues/test_rs_hidden_columns.py +136 -0
  244. arrowsql-0.1.0/tests/common_issues/test_rs_hierarchyid.py +267 -0
  245. arrowsql-0.1.0/tests/common_issues/test_rs_identifiers_quoting.py +213 -0
  246. arrowsql-0.1.0/tests/common_issues/test_rs_identity_triggers.py +312 -0
  247. arrowsql-0.1.0/tests/common_issues/test_rs_isolation_levels.py +384 -0
  248. arrowsql-0.1.0/tests/common_issues/test_rs_leaks_lifecycle.py +299 -0
  249. arrowsql-0.1.0/tests/common_issues/test_rs_legacy_datetime_rounding.py +241 -0
  250. arrowsql-0.1.0/tests/common_issues/test_rs_legacy_lob_types.py +279 -0
  251. arrowsql-0.1.0/tests/common_issues/test_rs_locking_blocking.py +440 -0
  252. arrowsql-0.1.0/tests/common_issues/test_rs_merge_output.py +331 -0
  253. arrowsql-0.1.0/tests/common_issues/test_rs_message_flood.py +245 -0
  254. arrowsql-0.1.0/tests/common_issues/test_rs_metadata_reuse.py +79 -0
  255. arrowsql-0.1.0/tests/common_issues/test_rs_money_arithmetic.py +242 -0
  256. arrowsql-0.1.0/tests/common_issues/test_rs_null_semantics.py +291 -0
  257. arrowsql-0.1.0/tests/common_issues/test_rs_output_clause.py +318 -0
  258. arrowsql-0.1.0/tests/common_issues/test_rs_pandas_polars_io.py +381 -0
  259. arrowsql-0.1.0/tests/common_issues/test_rs_param_binding_fastpaths.py +133 -0
  260. arrowsql-0.1.0/tests/common_issues/test_rs_param_fast_cells.py +87 -0
  261. arrowsql-0.1.0/tests/common_issues/test_rs_param_type_plancache.py +302 -0
  262. arrowsql-0.1.0/tests/common_issues/test_rs_param_wire_paths.py +58 -0
  263. arrowsql-0.1.0/tests/common_issues/test_rs_pyformat_named.py +227 -0
  264. arrowsql-0.1.0/tests/common_issues/test_rs_read_arrow_partitions.py +259 -0
  265. arrowsql-0.1.0/tests/common_issues/test_rs_read_arrow_stream.py +292 -0
  266. arrowsql-0.1.0/tests/common_issues/test_rs_rowversion_concurrency.py +244 -0
  267. arrowsql-0.1.0/tests/common_issues/test_rs_savepoints_nested.py +347 -0
  268. arrowsql-0.1.0/tests/common_issues/test_rs_session_set_options.py +445 -0
  269. arrowsql-0.1.0/tests/common_issues/test_rs_setinputsizes.py +275 -0
  270. arrowsql-0.1.0/tests/common_issues/test_rs_sparse_columnsets.py +269 -0
  271. arrowsql-0.1.0/tests/common_issues/test_rs_spatial_deep.py +383 -0
  272. arrowsql-0.1.0/tests/common_issues/test_rs_sql_variant_deep.py +313 -0
  273. arrowsql-0.1.0/tests/common_issues/test_rs_string_truncation.py +243 -0
  274. arrowsql-0.1.0/tests/common_issues/test_rs_temporal_tables.py +354 -0
  275. arrowsql-0.1.0/tests/common_issues/test_rs_time7_precision.py +83 -0
  276. arrowsql-0.1.0/tests/common_issues/test_rs_time_scales.py +216 -0
  277. arrowsql-0.1.0/tests/common_issues/test_rs_triggers_rowcount.py +300 -0
  278. arrowsql-0.1.0/tests/common_issues/test_rs_tvp_support.py +244 -0
  279. arrowsql-0.1.0/tests/common_issues/test_rs_uniqueidentifier_order.py +333 -0
  280. arrowsql-0.1.0/tests/common_issues/test_rs_utf8_collations.py +272 -0
  281. arrowsql-0.1.0/tests/common_issues/test_rs_utf8_strings.py +215 -0
  282. arrowsql-0.1.0/tests/common_issues/test_rs_varchar_codepages.py +260 -0
  283. arrowsql-0.1.0/tests/common_issues/test_rs_xml_deep.py +271 -0
  284. arrowsql-0.1.0/tests/common_issues/test_scope_identity_temp.py +273 -0
  285. arrowsql-0.1.0/tests/common_issues/test_special_types.py +359 -0
  286. arrowsql-0.1.0/tests/common_issues/test_stored_procs.py +343 -0
  287. arrowsql-0.1.0/tests/common_issues/test_temporal.py +306 -0
  288. arrowsql-0.1.0/tests/common_issues/test_threading_gil.py +465 -0
  289. arrowsql-0.1.0/tests/common_issues/test_timeouts_cancel.py +351 -0
  290. arrowsql-0.1.0/tests/common_issues/test_transactions.py +350 -0
  291. arrowsql-0.1.0/tests/common_issues/test_unicode.py +247 -0
  292. arrowsql-0.1.0/tests/common_issues/test_wide_and_many.py +269 -0
  293. arrowsql-0.1.0/tests/port/test_free_threaded.py +107 -0
  294. arrowsql-0.1.0/tests/port/test_runtime_fork.py +134 -0
  295. arrowsql-0.1.0/tests/port/test_tls.py +123 -0
  296. arrowsql-0.1.0/tests/upstream_excluded.txt +12 -0
  297. arrowsql-0.1.0/tests/upstream_passing_baseline.txt +4253 -0
  298. arrowsql-0.1.0/vendor/mssql-tds/.env +5 -0
  299. arrowsql-0.1.0/vendor/mssql-tds/Cargo.toml +133 -0
  300. arrowsql-0.1.0/vendor/mssql-tds/LICENSE +21 -0
  301. arrowsql-0.1.0/vendor/mssql-tds/README.md +101 -0
  302. arrowsql-0.1.0/vendor/mssql-tds/VENDOR.md +115 -0
  303. arrowsql-0.1.0/vendor/mssql-tds/src/cli.rs +4 -0
  304. arrowsql-0.1.0/vendor/mssql-tds/src/connection/blocking.rs +289 -0
  305. arrowsql-0.1.0/vendor/mssql-tds/src/connection/bulk_copy.rs +1804 -0
  306. arrowsql-0.1.0/vendor/mssql-tds/src/connection/bulk_copy_state.rs +409 -0
  307. arrowsql-0.1.0/vendor/mssql-tds/src/connection/client_context.rs +2112 -0
  308. arrowsql-0.1.0/vendor/mssql-tds/src/connection/connect_stage.rs +399 -0
  309. arrowsql-0.1.0/vendor/mssql-tds/src/connection/connection_actions.rs +1559 -0
  310. arrowsql-0.1.0/vendor/mssql-tds/src/connection/cursor_ops.rs +1174 -0
  311. arrowsql-0.1.0/vendor/mssql-tds/src/connection/datasource_parser.rs +1729 -0
  312. arrowsql-0.1.0/vendor/mssql-tds/src/connection/dns_cache.rs +479 -0
  313. arrowsql-0.1.0/vendor/mssql-tds/src/connection/execution_context.rs +627 -0
  314. arrowsql-0.1.0/vendor/mssql-tds/src/connection/instance_cache.rs +198 -0
  315. arrowsql-0.1.0/vendor/mssql-tds/src/connection/metadata_retriever.rs +807 -0
  316. arrowsql-0.1.0/vendor/mssql-tds/src/connection/multi_subnet_failover.rs +481 -0
  317. arrowsql-0.1.0/vendor/mssql-tds/src/connection/session_recovery.rs +1321 -0
  318. arrowsql-0.1.0/vendor/mssql-tds/src/connection/tds_client.rs +22748 -0
  319. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/any_transport.rs +798 -0
  320. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/buffers.rs +772 -0
  321. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/busy_poll.rs +134 -0
  322. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/certificate_validator.rs +341 -0
  323. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/extractable_stream.rs +384 -0
  324. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/localdb.rs +705 -0
  325. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/named_pipes.rs +325 -0
  326. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/network_transport.rs +7811 -0
  327. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/parallel_connect.rs +797 -0
  328. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/ssl_handler.rs +813 -0
  329. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tds_transport.rs +115 -0
  330. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls/native_tls_engine.rs +234 -0
  331. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls/rustls_engine.rs +368 -0
  332. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/tls.rs +103 -0
  333. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/alpn.rs +243 -0
  334. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/bindings.rs +113 -0
  335. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/cred.rs +376 -0
  336. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/engine.rs +222 -0
  337. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/errors.rs +116 -0
  338. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/handshake.rs +538 -0
  339. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/mod.rs +42 -0
  340. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/record_layer.rs +576 -0
  341. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/sspi.rs +94 -0
  342. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/stream.rs +955 -0
  343. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport/win_tls/validate.rs +289 -0
  344. arrowsql-0.1.0/vendor/mssql-tds/src/connection/transport.rs +26 -0
  345. arrowsql-0.1.0/vendor/mssql-tds/src/connection.rs +37 -0
  346. arrowsql-0.1.0/vendor/mssql-tds/src/connection_provider/tds_connection_provider.rs +1616 -0
  347. arrowsql-0.1.0/vendor/mssql-tds/src/connection_provider.rs +10 -0
  348. arrowsql-0.1.0/vendor/mssql-tds/src/core.rs +393 -0
  349. arrowsql-0.1.0/vendor/mssql-tds/src/cursor/cursor_response.rs +182 -0
  350. arrowsql-0.1.0/vendor/mssql-tds/src/cursor/cursor_types.rs +630 -0
  351. arrowsql-0.1.0/vendor/mssql-tds/src/cursor/mod.rs +37 -0
  352. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/bulk_copy_metadata.rs +1584 -0
  353. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/bulk_copy_metadata_tests.rs +165 -0
  354. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/column_values.rs +576 -0
  355. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/decoder.rs +8003 -0
  356. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/encoder.rs +47 -0
  357. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/lcid_encoding.rs +427 -0
  358. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/row_writer.rs +595 -0
  359. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_json.rs +104 -0
  360. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_string/encoding.rs +566 -0
  361. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_string.rs +1108 -0
  362. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_tvp.rs +1312 -0
  363. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_udt.rs +215 -0
  364. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sql_vector.rs +309 -0
  365. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sqldatatypes.rs +1811 -0
  366. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sqltypes.rs +2716 -0
  367. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/sync_decoder.rs +0 -0
  368. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes/tds_value_serializer.rs +5367 -0
  369. arrowsql-0.1.0/vendor/mssql-tds/src/datatypes.rs +34 -0
  370. arrowsql-0.1.0/vendor/mssql-tds/src/error/bulk_copy_errors.rs +223 -0
  371. arrowsql-0.1.0/vendor/mssql-tds/src/error/mod.rs +805 -0
  372. arrowsql-0.1.0/vendor/mssql-tds/src/fuzz_support.rs +1225 -0
  373. arrowsql-0.1.0/vendor/mssql-tds/src/handler/handler_factory.rs +1057 -0
  374. arrowsql-0.1.0/vendor/mssql-tds/src/handler/sspi_handler.rs +274 -0
  375. arrowsql-0.1.0/vendor/mssql-tds/src/handler.rs +7 -0
  376. arrowsql-0.1.0/vendor/mssql-tds/src/io/packet_reader.rs +201 -0
  377. arrowsql-0.1.0/vendor/mssql-tds/src/io/packet_writer.rs +1961 -0
  378. arrowsql-0.1.0/vendor/mssql-tds/src/io/reader_writer.rs +110 -0
  379. arrowsql-0.1.0/vendor/mssql-tds/src/io/token_stream.rs +2416 -0
  380. arrowsql-0.1.0/vendor/mssql-tds/src/io.rs +30 -0
  381. arrowsql-0.1.0/vendor/mssql-tds/src/lib.rs +126 -0
  382. arrowsql-0.1.0/vendor/mssql-tds/src/message/attention.rs +32 -0
  383. arrowsql-0.1.0/vendor/mssql-tds/src/message/batch.rs +86 -0
  384. arrowsql-0.1.0/vendor/mssql-tds/src/message/bulk_load.rs +1698 -0
  385. arrowsql-0.1.0/vendor/mssql-tds/src/message/bulk_load_tests.rs +513 -0
  386. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/always_encrypted.rs +223 -0
  387. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/data_classification.rs +341 -0
  388. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/dns_caching.rs +164 -0
  389. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/enhanced_routing.rs +162 -0
  390. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/fedauth.rs +337 -0
  391. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/jsonfeature.rs +167 -0
  392. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/session_recovery.rs +722 -0
  393. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/useragent.rs +403 -0
  394. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/utf8.rs +107 -0
  395. arrowsql-0.1.0/vendor/mssql-tds/src/message/features/vectorfeature.rs +218 -0
  396. arrowsql-0.1.0/vendor/mssql-tds/src/message/features.rs +13 -0
  397. arrowsql-0.1.0/vendor/mssql-tds/src/message/headers.rs +300 -0
  398. arrowsql-0.1.0/vendor/mssql-tds/src/message/login.rs +3052 -0
  399. arrowsql-0.1.0/vendor/mssql-tds/src/message/login_options.rs +597 -0
  400. arrowsql-0.1.0/vendor/mssql-tds/src/message/messages.rs +252 -0
  401. arrowsql-0.1.0/vendor/mssql-tds/src/message/parameters/rpc_parameters.rs +2306 -0
  402. arrowsql-0.1.0/vendor/mssql-tds/src/message/parameters.rs +5 -0
  403. arrowsql-0.1.0/vendor/mssql-tds/src/message/prelogin.rs +596 -0
  404. arrowsql-0.1.0/vendor/mssql-tds/src/message/rpc.rs +690 -0
  405. arrowsql-0.1.0/vendor/mssql-tds/src/message/transaction_management.rs +210 -0
  406. arrowsql-0.1.0/vendor/mssql-tds/src/message.rs +26 -0
  407. arrowsql-0.1.0/vendor/mssql-tds/src/query/metadata.rs +744 -0
  408. arrowsql-0.1.0/vendor/mssql-tds/src/query/result.rs +42 -0
  409. arrowsql-0.1.0/vendor/mssql-tds/src/query.rs +20 -0
  410. arrowsql-0.1.0/vendor/mssql-tds/src/security/cell_decryptor.rs +40 -0
  411. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/apple.rs +290 -0
  412. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/cng.rs +798 -0
  413. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/der.rs +359 -0
  414. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/mod.rs +222 -0
  415. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/openssl.rs +179 -0
  416. arrowsql-0.1.0/vendor/mssql-tds/src/security/crypto/unsupported.rs +70 -0
  417. arrowsql-0.1.0/vendor/mssql-tds/src/security/describe_parameter_encryption.rs +317 -0
  418. arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/aead_aes_256_cbc_hmac_sha256.rs +376 -0
  419. arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/cell.rs +1595 -0
  420. arrowsql-0.1.0/vendor/mssql-tds/src/security/encryption/mod.rs +20 -0
  421. arrowsql-0.1.0/vendor/mssql-tds/src/security/error.rs +382 -0
  422. arrowsql-0.1.0/vendor/mssql-tds/src/security/keystore/certificate.rs +445 -0
  423. arrowsql-0.1.0/vendor/mssql-tds/src/security/keystore/mod.rs +620 -0
  424. arrowsql-0.1.0/vendor/mssql-tds/src/security/mock.rs +376 -0
  425. arrowsql-0.1.0/vendor/mssql-tds/src/security/mod.rs +104 -0
  426. arrowsql-0.1.0/vendor/mssql-tds/src/security/query_metadata_cache.rs +193 -0
  427. arrowsql-0.1.0/vendor/mssql-tds/src/security/security_context.rs +287 -0
  428. arrowsql-0.1.0/vendor/mssql-tds/src/security/spn.rs +425 -0
  429. arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/gssapi_context.rs +640 -0
  430. arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/gssapi_ffi.rs +988 -0
  431. arrowsql-0.1.0/vendor/mssql-tds/src/security/unix/mod.rs +40 -0
  432. arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/mod.rs +44 -0
  433. arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/sspi_context.rs +383 -0
  434. arrowsql-0.1.0/vendor/mssql-tds/src/security/windows/sspi_ffi.rs +507 -0
  435. arrowsql-0.1.0/vendor/mssql-tds/src/sql_identifier.rs +530 -0
  436. arrowsql-0.1.0/vendor/mssql-tds/src/ssrp.rs +925 -0
  437. arrowsql-0.1.0/vendor/mssql-tds/src/test_client_support.rs +1080 -0
  438. arrowsql-0.1.0/vendor/mssql-tds/src/test_packet_support.rs +229 -0
  439. arrowsql-0.1.0/vendor/mssql-tds/src/token/data_classification.rs +206 -0
  440. arrowsql-0.1.0/vendor/mssql-tds/src/token/fed_auth_info.rs +146 -0
  441. arrowsql-0.1.0/vendor/mssql-tds/src/token/login_ack.rs +90 -0
  442. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/col_info_parser.rs +94 -0
  443. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/colmetadata_parser.rs +880 -0
  444. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/common.rs +256 -0
  445. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/data_classification_parser.rs +806 -0
  446. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/done_parser.rs +313 -0
  447. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/envchange_parser.rs +1271 -0
  448. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/error_parser.rs +346 -0
  449. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/featureext_parser.rs +49 -0
  450. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/fedauth_parser.rs +710 -0
  451. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/info_parser.rs +297 -0
  452. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/loginack_parser.rs +59 -0
  453. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/mod.rs +121 -0
  454. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/nbcrow_parser.rs +334 -0
  455. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/order_parser.rs +136 -0
  456. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/returnstatus_parser.rs +183 -0
  457. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/returnvalue_parser.rs +93 -0
  458. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/row_parser.rs +326 -0
  459. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/session_state_parser.rs +325 -0
  460. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/sspi_parser.rs +171 -0
  461. arrowsql-0.1.0/vendor/mssql-tds/src/token/parsers/tab_name_parser.rs +66 -0
  462. arrowsql-0.1.0/vendor/mssql-tds/src/token/tokenitems.rs +85 -0
  463. arrowsql-0.1.0/vendor/mssql-tds/src/token/tokens.rs +1619 -0
  464. arrowsql-0.1.0/vendor/mssql-tds/src/token.rs +13 -0
  465. 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,15 @@
1
+ .venv/
2
+ .venv-upstream/
3
+ .env.local
4
+ data/
5
+ target/
6
+ *.so
7
+ __pycache__/
8
+ *.xml
9
+ *.log
10
+ .worktrees/
11
+ .codegraph/
12
+ reviews/*.log
13
+ .claude/worktrees/
14
+ .overlay-upstream/
15
+ .tls-test/
@@ -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`).