databricks-sql-kernel 1.0.0__tar.gz → 1.2.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 (229) hide show
  1. databricks_sql_kernel-1.2.0/.github/scripts/check-release-debuginfo.ps1 +154 -0
  2. databricks_sql_kernel-1.2.0/.github/scripts/check-release-debuginfo.sh +164 -0
  3. databricks_sql_kernel-1.2.0/.github/workflows/release-debuginfo.yml +138 -0
  4. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CHANGELOG.md +84 -0
  5. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CONNECTION_PARAMETERS.md +38 -1
  6. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Cargo.lock +255 -9
  7. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Cargo.toml +24 -2
  8. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/PKG-INFO +1 -1
  9. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/README.md +5 -0
  10. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/kernel-telemetry-design.md +1 -1
  11. databricks_sql_kernel-1.2.0/docs/release-debuginfo.md +103 -0
  12. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/spec-v0.md +10 -3
  13. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/include/databricks_kernel.h +209 -13
  14. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/CHANGELOG.md +24 -0
  15. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/Cargo.lock +351 -36
  16. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/Cargo.toml +1 -1
  17. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/executed_async.rs +4 -3
  18. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/lib.rs +1 -0
  19. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/logging.rs +79 -7
  20. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/metadata.rs +3 -3
  21. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/result_stream.rs +5 -4
  22. databricks_sql_kernel-1.2.0/pyo3/src/runtime.rs +142 -0
  23. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/session.rs +126 -27
  24. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/statement.rs +12 -10
  25. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyproject.toml +1 -1
  26. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt_m2m.rs +41 -3
  27. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/m2m.rs +246 -26
  28. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/mod.rs +120 -1
  29. databricks_sql_kernel-1.2.0/src/c_abi/result.rs +1022 -0
  30. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/session.rs +389 -45
  31. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/statement.rs +523 -23
  32. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/http.rs +130 -17
  33. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/mod.rs +2 -1
  34. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/retry.rs +7 -1
  35. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/sea.rs +1077 -109
  36. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/transport.rs +40 -6
  37. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/config.rs +118 -22
  38. databricks_sql_kernel-1.2.0/src/feature_flags/cache.rs +217 -0
  39. databricks_sql_kernel-1.2.0/src/feature_flags/mod.rs +1039 -0
  40. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/kernel_error.rs +1 -0
  41. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/lib.rs +12 -3
  42. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/sql.rs +38 -34
  43. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/thrift_shape.rs +329 -44
  44. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/type_mapping.rs +394 -43
  45. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata_v0.rs +522 -73
  46. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/chunk_downloader.rs +32 -4
  47. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/link_fetcher.rs +14 -10
  48. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/streaming_provider.rs +1313 -42
  49. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/provider.rs +8 -8
  50. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/streaming.rs +215 -39
  51. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/mod.rs +469 -41
  52. databricks_sql_kernel-1.2.0/src/reader/post_processor/geospatial.rs +2254 -0
  53. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/post_processor/json.rs +9 -12
  54. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/post_processor/mod.rs +435 -63
  55. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/test_utils.rs +64 -0
  56. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/result_stream.rs +50 -0
  57. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/session.rs +550 -36
  58. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/executed.rs +27 -0
  59. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/executed_async.rs +259 -19
  60. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/mod.rs +2 -0
  61. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/mutable.rs +153 -15
  62. databricks_sql_kernel-1.2.0/src/statement/timeout.rs +210 -0
  63. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/client.rs +4 -4
  64. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/manager.rs +5 -5
  65. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/models.rs +1 -1
  66. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/runtime.rs +43 -6
  67. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/cloudfetch.rs +35 -2
  68. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/sea.rs +141 -9
  69. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c/session_smoke.c +33 -0
  70. databricks_sql_kernel-1.2.0/tests/symbols/staticlib_consumer.c +26 -0
  71. databricks_sql_kernel-1.2.0/tests/tls_rustls_native_roots.rs +229 -0
  72. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_async_execute_wiremock.rs +313 -1
  73. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_canceller_wiremock.rs +950 -13
  74. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_result_config_wiremock.rs +49 -4
  75. databricks_sql_kernel-1.2.0/tests/v0_c_abi_result_stream_canceller_wiremock.rs +155 -0
  76. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_session_test_wiremock.rs +58 -2
  77. databricks_sql_kernel-1.2.0/tests/v0_execute_wiremock.rs +2903 -0
  78. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_e2e.rs +18 -48
  79. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_wiremock.rs +701 -26
  80. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_session_wiremock.rs +137 -1
  81. databricks_sql_kernel-1.0.0/src/c_abi/result.rs +0 -399
  82. databricks_sql_kernel-1.0.0/tests/v0_execute_wiremock.rs +0 -1264
  83. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/config.yaml +0 -0
  84. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/context-repos.yaml +0 -0
  85. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer/system.md +0 -0
  86. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer/user.md +0 -0
  87. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer-followup/system.md +0 -0
  88. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/retrospective_system.md +0 -0
  89. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/review/system.md +0 -0
  90. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.claude/knowledge/learning-log.md +0 -0
  91. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/CODEOWNERS +0 -0
  92. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/bot-prelude/action.yml +0 -0
  93. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/install-bot-engine/action.yml +0 -0
  94. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/setup-jfrog/action.yml +0 -0
  95. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/dependabot.yml +0 -0
  96. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/scripts/check-napi-loader-drift.sh +0 -0
  97. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/cargo-publish.yml +0 -0
  98. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/close-stale.yml +0 -0
  99. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/coverage.yml +0 -0
  100. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/dco-check.yml +0 -0
  101. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot-followup.yml +0 -0
  102. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot-learning.yml +0 -0
  103. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot.yml +0 -0
  104. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/license-check.yml +0 -0
  105. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/napi-checks.yml +0 -0
  106. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/pr-checks.yml +0 -0
  107. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/pyo3-checks.yml +0 -0
  108. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/reviewer-bot-followup.yml +0 -0
  109. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/reviewer-bot.yml +0 -0
  110. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/rust-e2e.yml +0 -0
  111. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/securityScan.yml +0 -0
  112. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/skip-checks-reporter.yml +0 -0
  113. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/trigger-coverage-fanout.yml +0 -0
  114. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/trigger-integration-tests.yml +0 -0
  115. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.gitignore +0 -0
  116. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CLAUDE.md +0 -0
  117. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/LICENSE +0 -0
  118. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Makefile +0 -0
  119. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/NEXT_CHANGELOG.md +0 -0
  120. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/NOTICE.txt +0 -0
  121. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/about.toml +0 -0
  122. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/ci/proxy/htpasswd +0 -0
  123. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/ci/proxy/squid-auth.conf +0 -0
  124. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/clippy.toml +0 -0
  125. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/deny.toml +0 -0
  126. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-2091-retry-logic-design.md +0 -0
  127. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-4141-azure-service-principal-design.md +0 -0
  128. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-4146-oauth-token-persistence-design.md +0 -0
  129. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/client-refactor-design.md +0 -0
  130. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/cloudfetch-implementation-plan.md +0 -0
  131. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/cloudfetch-pipeline-redesign.md +0 -0
  132. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/complex-types-json-stringify.md +0 -0
  133. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/connection-metadata-design.md +0 -0
  134. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/fix-duplicate-link-prefetch.md +0 -0
  135. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/inline-arrow-results-design.md +0 -0
  136. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/oauth-sprint-plan.md +0 -0
  137. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/oauth-u2m-m2m-design.md +0 -0
  138. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/odbc-batch-optimization.md +0 -0
  139. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/odbc-metadata-ffi-design.md +0 -0
  140. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/prepared-statement-design.md +0 -0
  141. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/proxy-support-design.md +0 -0
  142. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/result-metadata-propagation.md +0 -0
  143. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/tls-config-design.md +0 -0
  144. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/token-federation-design.md +0 -0
  145. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/migration-plan.md +0 -0
  146. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/pr-4-plan.md +0 -0
  147. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/pr-5-plan.md +0 -0
  148. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/include/legacy/databricks_metadata_ffi.h +0 -0
  149. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/license.tpl +0 -0
  150. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/osv-scanner.toml +0 -0
  151. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/NEXT_CHANGELOG.md +0 -0
  152. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/pytest.ini +0 -0
  153. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/release-notes.txt +0 -0
  154. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/auth.rs +0 -0
  155. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/errors.rs +0 -0
  156. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/fetch.rs +0 -0
  157. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/macros.rs +0 -0
  158. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/params.rs +0 -0
  159. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/conftest.py +0 -0
  160. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_async.py +0 -0
  161. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_auth.py +0 -0
  162. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_execute.py +0 -0
  163. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_metadata.py +0 -0
  164. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_module.py +0 -0
  165. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_session.py +0 -0
  166. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/release-notes.txt +0 -0
  167. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/config.rs +0 -0
  168. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/mod.rs +0 -0
  169. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/azure.rs +0 -0
  170. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/cache.rs +0 -0
  171. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/cache_crypto.rs +0 -0
  172. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/callback.rs +0 -0
  173. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/federation.rs +0 -0
  174. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt.rs +0 -0
  175. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt_key.rs +0 -0
  176. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/mod.rs +0 -0
  177. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/oidc.rs +0 -0
  178. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/test_keys.rs +0 -0
  179. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/token.rs +0 -0
  180. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/token_store.rs +0 -0
  181. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/u2m.rs +0 -0
  182. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/pat.rs +0 -0
  183. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/error.rs +0 -0
  184. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/metadata.rs +0 -0
  185. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/klog.rs +0 -0
  186. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/logging.rs +0 -0
  187. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/mod.rs +0 -0
  188. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/schemas.rs +0 -0
  189. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/static_data.rs +0 -0
  190. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/arrow_parser.rs +0 -0
  191. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/mod.rs +0 -0
  192. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/mod.rs +0 -0
  193. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/result/mod.rs +0 -0
  194. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/dml_count.rs +0 -0
  195. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/handle.rs +0 -0
  196. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/params.rs +0 -0
  197. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/params_codec.rs +0 -0
  198. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/spec.rs +0 -0
  199. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/validity.rs +0 -0
  200. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/circuit_breaker.rs +0 -0
  201. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/databricks.rs +0 -0
  202. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/exporter.rs +0 -0
  203. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/mod.rs +0 -0
  204. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/statement.rs +0 -0
  205. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/test_support.rs +0 -0
  206. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/mod.rs +0 -0
  207. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/util/mod.rs +0 -0
  208. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/util/runtime.rs +0 -0
  209. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/bot_e2e_helper.rs +0 -0
  210. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback.rs +0 -0
  211. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_conflict.rs +0 -0
  212. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_panic.rs +0 -0
  213. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_reentrancy.rs +0 -0
  214. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_mtls_e2e.rs +0 -0
  215. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/common/mod.rs +0 -0
  216. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/klog_bridge.rs +0 -0
  217. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/oauth_u2m_integration.rs +0 -0
  218. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/token_federation_wiremock.rs +0 -0
  219. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_async_execute_e2e.rs +0 -0
  220. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_metadata_table_types_wiremock.rs +0 -0
  221. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_session_close_wiremock.rs +0 -0
  222. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_execute_e2e.rs +0 -0
  223. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_logging_wiremock.rs +0 -0
  224. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_empty_types_e2e.rs +0 -0
  225. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_query_tags_headers_e2e.rs +0 -0
  226. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_session_e2e.rs +0 -0
  227. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_statement_canceller_reexecute.rs +0 -0
  228. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_tls_e2e.rs +0 -0
  229. {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_transactions_e2e.rs +0 -0
@@ -0,0 +1,154 @@
1
+ # Copyright (c) 2026 Databricks, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ Set-StrictMode -Version Latest
16
+ $ErrorActionPreference = "Stop"
17
+
18
+ function Invoke-Checked {
19
+ param(
20
+ [Parameter(Mandatory = $true)][string]$FilePath,
21
+ [Parameter(Mandatory = $false)][AllowEmptyCollection()][string[]]$Arguments = @()
22
+ )
23
+
24
+ & $FilePath @Arguments
25
+ if ($LASTEXITCODE -ne 0) {
26
+ throw "command failed with exit code ${LASTEXITCODE}: $FilePath $($Arguments -join ' ')"
27
+ }
28
+ }
29
+
30
+ function Find-AsciiMatch {
31
+ param(
32
+ [Parameter(Mandatory = $true)][string]$Path,
33
+ [Parameter(Mandatory = $true)][regex]$Pattern
34
+ )
35
+
36
+ $buffer = [byte[]]::new(65536)
37
+ $tail = ""
38
+ $stream = [System.IO.File]::OpenRead($Path)
39
+ try {
40
+ while (($bytesRead = $stream.Read($buffer, 0, $buffer.Length)) -gt 0) {
41
+ $chunk = $tail + [System.Text.Encoding]::ASCII.GetString($buffer, 0, $bytesRead)
42
+ $match = $Pattern.Match($chunk)
43
+ if ($match.Success) {
44
+ return $match.Value
45
+ }
46
+ $tailLength = [Math]::Min(1024, $chunk.Length)
47
+ $tail = $chunk.Substring($chunk.Length - $tailLength)
48
+ }
49
+ } finally {
50
+ $stream.Dispose()
51
+ }
52
+ return $null
53
+ }
54
+
55
+ $profileName = "release-with-debuginfo"
56
+ $repoRoot = (Resolve-Path (Join-Path $PSScriptRoot "../..")).Path
57
+ $targetRoot = if ($env:CARGO_TARGET_DIR) {
58
+ [System.IO.Path]::GetFullPath($env:CARGO_TARGET_DIR, $repoRoot)
59
+ } else {
60
+ Join-Path $repoRoot "target"
61
+ }
62
+ $profileDir = Join-Path $targetRoot $profileName
63
+ $source = Join-Path $repoRoot "tests/symbols/staticlib_consumer.c"
64
+ $includeDir = Join-Path $repoRoot "include"
65
+ $archive = Join-Path $profileDir "databricks_sql_kernel.lib"
66
+ $object = Join-Path $profileDir "staticlib_consumer.obj"
67
+ $executable = Join-Path $profileDir "kernel-symbol-smoke.exe"
68
+ $pdb = Join-Path $profileDir "kernel-symbol-smoke.pdb"
69
+
70
+ New-Item -ItemType Directory -Force -Path $profileDir | Out-Null
71
+ Push-Location $repoRoot
72
+ try {
73
+ # Build the exact static archive under test and capture the MSVC system
74
+ # libraries that rustc says its final native linker must receive.
75
+ # The toolchain action enables color globally; disable it here so ANSI reset
76
+ # bytes cannot become part of the parsed final library argument.
77
+ $env:CARGO_TERM_COLOR = "never"
78
+ $buildLines = @(& cargo rustc --locked --profile $profileName --lib -- --print=native-static-libs 2>&1)
79
+ $buildExit = $LASTEXITCODE
80
+ $buildLines | ForEach-Object { Write-Host $_ }
81
+ if ($buildExit -ne 0) {
82
+ throw "cargo rustc failed with exit code $buildExit"
83
+ }
84
+ if (-not (Test-Path -LiteralPath $archive -PathType Leaf)) {
85
+ throw "Cargo did not produce $archive"
86
+ }
87
+
88
+ $nativeLine = $buildLines |
89
+ ForEach-Object { "$_" } |
90
+ Where-Object { $_ -match "native-static-libs:\s*(.+)$" } |
91
+ Select-Object -Last 1
92
+ if (-not $nativeLine) {
93
+ throw "rustc did not report native-static-libs"
94
+ }
95
+ $nativeText = ([regex]::Match($nativeLine, "native-static-libs:\s*(.+)$")).Groups[1].Value.Trim()
96
+ $nativeLinkArgs = @($nativeText -split "\s+" | Where-Object { $_ })
97
+
98
+ Invoke-Checked "cl.exe" @(
99
+ "/nologo", "/c", "/O2", "/MD", "/Z7", "/I$includeDir", $source, "/Fo$object"
100
+ )
101
+ $linkArgs = @(
102
+ "/NOLOGO", "/DEBUG:FULL", "/OPT:REF", "/OPT:ICF", "/INCREMENTAL:NO",
103
+ "/PDB:$pdb", "/PDBALTPATH:%_PDB%", "/OUT:$executable",
104
+ $object, $archive
105
+ ) + $nativeLinkArgs
106
+ Invoke-Checked "link.exe" $linkArgs
107
+ if (-not (Test-Path -LiteralPath $pdb -PathType Leaf)) {
108
+ throw "link.exe did not produce $pdb"
109
+ }
110
+ Invoke-Checked $executable @()
111
+
112
+ if (-not (Get-Command "dumpbin.exe" -ErrorAction SilentlyContinue)) {
113
+ throw "dumpbin.exe is required to validate the executable/PDB CodeView identity"
114
+ }
115
+
116
+ $functionPattern = [regex]::new("kernel_get_last_error")
117
+ $sourcePattern = [regex]::new("(?i)src[\\/]c_abi[\\/]error\.rs")
118
+ if (-not (Find-AsciiMatch $pdb $functionPattern)) {
119
+ throw "PDB does not describe kernel_get_last_error"
120
+ }
121
+ if (-not (Find-AsciiMatch $pdb $sourcePattern)) {
122
+ throw "PDB does not name src/c_abi/error.rs"
123
+ }
124
+
125
+ # The PE carries only the CodeView locator/identity; source and function
126
+ # records stay in the separately published PDB. In an isolated directory,
127
+ # dumpbin reports the adjacent PDB only when its GUID and age match the PE.
128
+ $checkDir = Join-Path ([System.IO.Path]::GetTempPath()) ("kernel-pdb-check-" + [guid]::NewGuid().ToString("N"))
129
+ New-Item -ItemType Directory -Path $checkDir | Out-Null
130
+ try {
131
+ $checkExe = Join-Path $checkDir (Split-Path -Leaf $executable)
132
+ $checkPdb = Join-Path $checkDir (Split-Path -Leaf $pdb)
133
+ Copy-Item -LiteralPath $executable -Destination $checkExe
134
+ Copy-Item -LiteralPath $pdb -Destination $checkPdb
135
+
136
+ $lookup = @(& dumpbin.exe /NOLOGO /PDBPATH $checkExe 2>&1)
137
+ $lookupExit = $LASTEXITCODE
138
+ $lookupText = $lookup | Out-String
139
+ Write-Host $lookupText
140
+ if ($lookupExit -ne 0) {
141
+ throw "dumpbin /PDBPATH failed with exit code $lookupExit"
142
+ }
143
+ if ($lookupText -notmatch [regex]::Escape($checkPdb)) {
144
+ throw "dumpbin did not resolve the supplied PDB; its GUID/age may not match the executable"
145
+ }
146
+ } finally {
147
+ Remove-Item -LiteralPath $checkDir -Recurse -Force -ErrorAction SilentlyContinue
148
+ }
149
+
150
+ Write-Host "ok: Windows PDB contains kernel Rust source/function info"
151
+ Write-Host "ok: dumpbin validated the executable/PDB CodeView GUID and age"
152
+ } finally {
153
+ Pop-Location
154
+ }
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (c) 2026 Databricks, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ set -euo pipefail
17
+
18
+ readonly PROFILE="release-with-debuginfo"
19
+ readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
20
+ readonly REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
21
+ readonly TARGET_ROOT="${CARGO_TARGET_DIR:-${REPO_ROOT}/target}"
22
+ readonly PROFILE_DIR="${TARGET_ROOT}/${PROFILE}"
23
+ readonly CONSUMER_SOURCE="${REPO_ROOT}/tests/symbols/staticlib_consumer.c"
24
+ readonly ARCHIVE="${PROFILE_DIR}/libdatabricks_sql_kernel.a"
25
+ readonly CONSUMER="${PROFILE_DIR}/kernel-symbol-smoke"
26
+
27
+ for command in cargo cc; do
28
+ if ! command -v "${command}" >/dev/null 2>&1; then
29
+ echo "FAIL: required command not found: ${command}" >&2
30
+ exit 1
31
+ fi
32
+ done
33
+
34
+ mkdir -p "${PROFILE_DIR}"
35
+ build_log="$(mktemp)"
36
+ trap 'rm -f "${build_log}"' EXIT
37
+
38
+ # Cargo prints the platform libraries a C/C++ final linker must add when it
39
+ # consumes this staticlib. Capture that list while building the exact archive
40
+ # under test.
41
+ CARGO_TERM_COLOR=never cargo rustc --locked --profile "${PROFILE}" --lib -- \
42
+ --print=native-static-libs 2>&1 | tee "${build_log}"
43
+
44
+ if [[ ! -f "${ARCHIVE}" ]]; then
45
+ echo "FAIL: Cargo did not produce ${ARCHIVE}" >&2
46
+ exit 1
47
+ fi
48
+
49
+ native_link_line="$(sed -n 's/^note: native-static-libs: //p' "${build_log}" | tail -n 1)"
50
+ if [[ -z "${native_link_line}" ]]; then
51
+ echo "FAIL: rustc did not report native-static-libs" >&2
52
+ exit 1
53
+ fi
54
+ read -r -a native_link_args <<<"${native_link_line}"
55
+
56
+ case "$(uname -s)" in
57
+ Linux)
58
+ for command in objcopy readelf; do
59
+ if ! command -v "${command}" >/dev/null 2>&1; then
60
+ echo "FAIL: required command not found: ${command}" >&2
61
+ exit 1
62
+ fi
63
+ done
64
+
65
+ debug_file="${CONSUMER}.debug"
66
+ cc -O2 -I "${REPO_ROOT}/include" "${CONSUMER_SOURCE}" "${ARCHIVE}" \
67
+ "${native_link_args[@]}" -Wl,--build-id=sha1 -o "${CONSUMER}"
68
+ "${CONSUMER}"
69
+
70
+ # This mirrors consumer packaging: retain full DWARF in the private symbol
71
+ # artifact, strip it from the customer executable, and leave only the GNU
72
+ # debug-link locator/checksum in the shipped file.
73
+ objcopy --only-keep-debug "${CONSUMER}" "${debug_file}"
74
+ objcopy --strip-debug "${CONSUMER}"
75
+ objcopy --add-gnu-debuglink="${debug_file}" "${CONSUMER}"
76
+
77
+ if readelf --sections "${CONSUMER}" | \
78
+ grep -E '\.debug_(abbrev|info|line|str)' >/dev/null; then
79
+ echo "FAIL: customer executable still contains DWARF sections" >&2
80
+ exit 1
81
+ fi
82
+ if ! readelf --sections "${CONSUMER}" | grep -F '.gnu_debuglink' >/dev/null; then
83
+ echo "FAIL: customer executable has no .gnu_debuglink" >&2
84
+ exit 1
85
+ fi
86
+
87
+ dwarf_dump="${PROFILE_DIR}/kernel-symbol-smoke.dwarf.txt"
88
+ line_dump="${PROFILE_DIR}/kernel-symbol-smoke.lines.txt"
89
+ readelf --debug-dump=info "${debug_file}" >"${dwarf_dump}"
90
+ readelf --debug-dump=decodedline "${debug_file}" >"${line_dump}"
91
+ if ! grep -Fq 'kernel_get_last_error' "${dwarf_dump}"; then
92
+ echo "FAIL: split DWARF does not describe kernel_get_last_error" >&2
93
+ exit 1
94
+ fi
95
+ if ! grep -Fq 'src/c_abi/error.rs' "${line_dump}"; then
96
+ echo "FAIL: split DWARF does not name src/c_abi/error.rs" >&2
97
+ exit 1
98
+ fi
99
+
100
+ binary_notes="$(readelf --notes "${CONSUMER}")"
101
+ debug_notes="$(readelf --notes "${debug_file}")"
102
+ binary_id="$(sed -n 's/.*Build ID: //p' <<<"${binary_notes}")"
103
+ debug_id="$(sed -n 's/.*Build ID: //p' <<<"${debug_notes}")"
104
+ if [[ -z "${binary_id}" || "${binary_id}" != "${debug_id}" ]]; then
105
+ echo "FAIL: executable and split DWARF build IDs do not match" >&2
106
+ exit 1
107
+ fi
108
+
109
+ echo "ok: Linux split DWARF contains kernel Rust source/function info"
110
+ echo "ok: executable and .debug share build ID ${binary_id}"
111
+ ;;
112
+ Darwin)
113
+ for command in dsymutil otool strip xcrun; do
114
+ if ! command -v "${command}" >/dev/null 2>&1; then
115
+ echo "FAIL: required command not found: ${command}" >&2
116
+ exit 1
117
+ fi
118
+ done
119
+
120
+ dsym="${CONSUMER}.dSYM"
121
+ cc -O2 -I "${REPO_ROOT}/include" "${CONSUMER_SOURCE}" "${ARCHIVE}" \
122
+ "${native_link_args[@]}" -o "${CONSUMER}"
123
+ "${CONSUMER}"
124
+ dsymutil "${CONSUMER}" -o "${dsym}"
125
+ strip -S "${CONSUMER}"
126
+
127
+ if otool -l "${CONSUMER}" | grep -F '__DWARF' >/dev/null; then
128
+ echo "FAIL: customer executable still contains a __DWARF segment" >&2
129
+ exit 1
130
+ fi
131
+
132
+ dwarf_dump="${PROFILE_DIR}/kernel-symbol-smoke.dwarf.txt"
133
+ dwarf_file="${dsym}/Contents/Resources/DWARF/$(basename "${CONSUMER}")"
134
+ if [[ ! -f "${dwarf_file}" ]]; then
135
+ echo "FAIL: dsymutil did not produce ${dwarf_file}" >&2
136
+ exit 1
137
+ fi
138
+ xcrun dwarfdump --name kernel_get_last_error "${dsym}" >"${dwarf_dump}"
139
+ if ! grep -Fq 'kernel_get_last_error' "${dwarf_dump}"; then
140
+ echo "FAIL: dSYM does not describe kernel_get_last_error" >&2
141
+ exit 1
142
+ fi
143
+ if ! grep -Eq 'DW_AT_decl_file.*error\.rs' "${dwarf_dump}"; then
144
+ echo "FAIL: kernel_get_last_error has no error.rs source record in the dSYM" >&2
145
+ exit 1
146
+ fi
147
+
148
+ binary_uuid_dump="$(xcrun dwarfdump --uuid "${CONSUMER}")"
149
+ dsym_uuid_dump="$(xcrun dwarfdump --uuid "${dsym}")"
150
+ binary_uuid="$(awk 'NR == 1 { print $2 }' <<<"${binary_uuid_dump}")"
151
+ dsym_uuid="$(awk 'NR == 1 { print $2 }' <<<"${dsym_uuid_dump}")"
152
+ if [[ -z "${binary_uuid}" || "${binary_uuid}" != "${dsym_uuid}" ]]; then
153
+ echo "FAIL: executable and dSYM UUIDs do not match" >&2
154
+ exit 1
155
+ fi
156
+
157
+ echo "ok: macOS dSYM contains kernel Rust source/function info"
158
+ echo "ok: executable and dSYM share UUID ${binary_uuid}"
159
+ ;;
160
+ *)
161
+ echo "FAIL: unsupported platform for this check: $(uname -s)" >&2
162
+ exit 1
163
+ ;;
164
+ esac
@@ -0,0 +1,138 @@
1
+ # Copyright (c) 2026 Databricks, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ name: Release Debuginfo
16
+
17
+ on:
18
+ push:
19
+ branches: [main]
20
+ pull_request:
21
+ types: [opened, synchronize, reopened]
22
+ branches: [main]
23
+ merge_group:
24
+
25
+ concurrency:
26
+ group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.sha || github.head_ref || github.ref }}
27
+ cancel-in-progress: true
28
+
29
+ permissions:
30
+ contents: read
31
+ id-token: write
32
+
33
+ jobs:
34
+ # Hosted macOS runners cannot check out this private repository through the
35
+ # org IP allow list. Hand the same checked-out source to macOS through the
36
+ # Actions artifact service, which is not allow-list gated.
37
+ macos-source:
38
+ name: Source handoff (macOS)
39
+ runs-on:
40
+ group: databricks-protected-runner-group
41
+ labels: [linux-ubuntu-latest]
42
+ timeout-minutes: 10
43
+ steps:
44
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
45
+ with:
46
+ path: repo-src
47
+
48
+ - name: Archive source
49
+ shell: bash
50
+ run: |
51
+ set -euo pipefail
52
+ tar czf repo-source.tar.gz -C repo-src --exclude='.git' .
53
+
54
+ - name: Upload source
55
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
56
+ with:
57
+ name: release-debuginfo-source
58
+ path: repo-source.tar.gz
59
+ retention-days: 1
60
+ if-no-files-found: error
61
+
62
+ linux:
63
+ name: Linux split DWARF
64
+ runs-on:
65
+ group: databricks-protected-runner-group
66
+ labels: [linux-ubuntu-latest]
67
+ timeout-minutes: 45
68
+ steps:
69
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
70
+
71
+ - uses: ./.github/actions/setup-jfrog
72
+ with:
73
+ cargo: "true"
74
+
75
+ - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
76
+ with:
77
+ toolchain: stable
78
+
79
+ - name: Verify split DWARF
80
+ shell: bash
81
+ run: bash .github/scripts/check-release-debuginfo.sh
82
+
83
+ macos:
84
+ name: macOS dSYM
85
+ needs: macos-source
86
+ runs-on: macos-15
87
+ timeout-minutes: 45
88
+ steps:
89
+ - name: Download source
90
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
91
+ with:
92
+ name: release-debuginfo-source
93
+
94
+ - name: Unpack source
95
+ shell: bash
96
+ run: |
97
+ set -euo pipefail
98
+ tar xzf repo-source.tar.gz -C "$GITHUB_WORKSPACE"
99
+ rm -f repo-source.tar.gz
100
+ test -f Cargo.toml
101
+
102
+ - uses: ./.github/actions/setup-jfrog
103
+ with:
104
+ cargo: "true"
105
+
106
+ - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
107
+ with:
108
+ toolchain: stable
109
+
110
+ - name: Verify dSYM
111
+ shell: bash
112
+ run: bash .github/scripts/check-release-debuginfo.sh
113
+
114
+ windows:
115
+ name: Windows linker PDB
116
+ runs-on:
117
+ group: databricks-protected-runner-group
118
+ labels: [windows-server-latest]
119
+ timeout-minutes: 45
120
+ steps:
121
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
122
+
123
+ - uses: ./.github/actions/setup-jfrog
124
+ with:
125
+ cargo: "true"
126
+
127
+ - uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
128
+ with:
129
+ toolchain: stable
130
+
131
+ - name: Set up MSVC environment
132
+ uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1
133
+ with:
134
+ arch: x64
135
+
136
+ - name: Verify linker PDB
137
+ shell: pwsh
138
+ run: ./.github/scripts/check-release-debuginfo.ps1
@@ -14,6 +14,90 @@ cadences and may not move in lockstep with the crate.
14
14
 
15
15
  ### Fixed
16
16
 
17
+ ## [v1.2.0] - 2026-10-19
18
+
19
+ ### Added
20
+ - Thrift-native metadata routing with compatible public-schema casts and
21
+ one-based `getColumns` ordinals.
22
+ - Native Arrow `GEOMETRY` / `GEOGRAPHY` results as tagged `struct<srid,wkb>`
23
+ values, including nested values and empty-result schemas. The kernel uses
24
+ the structured logical manifest to reconcile attachments without copying
25
+ child buffers.
26
+ - Typed client-side `GEOMETRY` / `GEOGRAPHY` result representation selection.
27
+ The kernel normalizes both standard-warehouse WKT / EWKT and Reyden's native
28
+ SRID+WKB struct to the requested representation. No representation setting
29
+ is sent to SEA.
30
+ - The default-enabled `kernel_session_config_set_enable_geospatial_support()`
31
+ C ABI setting selects native SRID+WKB Arrow results when enabled and
32
+ WKT / EWKT strings when disabled.
33
+ - Authenticated connector-service feature flags with a bounded, process-wide
34
+ workspace cache and kernel-internal typed readers for all six SAFE types.
35
+ - Result schemas carry the Thrift-compatible `Spark:DataType:SqlName` and
36
+ optional `Spark:DataType:JsonType` field metadata from the SEA manifest.
37
+ - Caller-driven asynchronous statement submission, status polling, result
38
+ materialization, query IDs, row counts, cancellation, and close over the C ABI.
39
+ - Nonblocking result-batch fetching through Rust `try_next_batch()` and the C ABI.
40
+ - `Statement::submit_with_timeout()` enforces one client deadline across
41
+ submission and asynchronous status polling, with cancellation on expiry.
42
+
43
+ ### Changed
44
+ - Native SRID+WKB is now the default geospatial result representation.
45
+ - Route function metadata through the Thrift-native metadata path when
46
+ supported by the server.
47
+ - Authenticated SEA requests use `Accept-Encoding: identity` by default to
48
+ avoid gzipping inline LZ4-compressed Arrow results. Response compression can
49
+ be re-enabled through `HttpConfig` or the C ABI.
50
+ - Feature flags are fetched after kernel authentication and before session
51
+ creation; sessions read process-cache values instead of retaining snapshots.
52
+ - Kernel telemetry enablement follows the connector-service feature flag when
53
+ the client leaves it unspecified; explicit client settings take precedence.
54
+ - **Breaking (Rust API):** `TelemetryConfig::enabled` changes from `bool` to
55
+ `Option<bool>`. `None` defers to the workspace feature flag; use
56
+ `with_enabled` / `set_enabled` or wrap explicit values in `Some(...)`.
57
+ - A backward-compatible C telemetry-config v2 setter uses nullable config and
58
+ `has_enabled` to preserve unspecified client enablement.
59
+ - Synchronous `execute()` waits for a terminal server state without the implicit
60
+ 600-second client timeout; explicit execution deadlines remain supported.
61
+ - Inline Arrow result decoding avoids redundant response and attachment copies.
62
+
63
+ ### Updated
64
+ - Updated `quinn-proto` to 0.11.18 to address security scan findings.
65
+
66
+ ### Fixed
67
+ - `list_tables` matches `table_types` case-sensitively, matching Thrift
68
+ `GetTables`: `["table"]` no longer matches `TABLE` rows.
69
+ - Primary-key metadata resolves missing catalog and schema independently from
70
+ the current session and preserves explicit empty names.
71
+ - Foreign-key metadata preserves server-provided update and delete rules as
72
+ nullable `Int16` values.
73
+ - Empty ARRAY result schemas use the Thrift-compatible `element` child name,
74
+ including nested arrays.
75
+ - M2M and Azure service-principal token exchanges retry transient failures;
76
+ exhausted transient failures retain their status-based error codes.
77
+
78
+ ## [v1.1.0] - 2026-09-23
79
+
80
+ ### Added
81
+ - Execution-scoped client query deadlines for Rust and C APIs.
82
+ - FAST-mode session version exchange.
83
+ - C ABI query tags, HTTP connection limits, connection-test deadlines, and
84
+ result-stream cancellation.
85
+ - Release-with-debuginfo build profile and native symbol checks.
86
+
87
+ ### Changed
88
+ - Client deadlines permit an in-flight status request five seconds to finish.
89
+ - Direct traffic identifies itself as Databricks SQL Kernel.
90
+ - rustls now includes OS trust roots.
91
+ - Updated rustls to remediate OSV findings.
92
+
93
+ ### Fixed
94
+ - CloudFetch downloads have end-to-end deadlines and terminal link-fetch
95
+ errors.
96
+ - C ABI workers preserve a two-MiB stack floor without shrinking larger
97
+ configured stacks.
98
+ - mTLS rejects non-HTTPS endpoints.
99
+ - PAT telemetry omits OAuth auth-flow metadata.
100
+
17
101
  ## [v1.0.0] - 2026-08-31
18
102
 
19
103
  ### Fixed
@@ -15,6 +15,7 @@ by the struct it lives on. `ConnectionConfig` and `AuthConfig` are
15
15
  | [`ProxyConfig`](#proxyconfig--httphttps-proxy-optional) | HTTP/HTTPS proxy |
16
16
  | [`TlsConfig`](#tlsconfig--tls--ssl-optional) | cert validation, custom CA, mTLS |
17
17
  | [`ResultConfig`](#resultconfig--result-handling-optional) | CloudFetch tuning, type rendering |
18
+ | [`geospatial_result_representation`](#geospatial_result_representation--geospatial-result-encoding-optional) | GEOMETRY / GEOGRAPHY result encoding |
18
19
  | [`LoggingConfig`](#loggingconfig--logging-optional) | log filter / file |
19
20
  | [`transport`](#transport--wire-protocol-optional) | wire protocol |
20
21
  | [`session_conf`](#session_conf--server-side-session-configuration-optional) | server-side SQL / Spark config |
@@ -173,9 +174,45 @@ Setting only one of `client_cert_pem` / `client_key_pem` is rejected at
173
174
  | `cloudfetch_link_prefetch_window` | Number of presigned URLs to prefetch ahead of the consumer. | `10` |
174
175
  | `cloudfetch_max_chunks_in_memory` | Max decompressed CloudFetch chunks held in memory at once (bounds download parallelism and peak RSS). | `16` |
175
176
  | `inline_max_chunks_in_memory` | Prefetch window for the inline-Arrow path (used when CloudFetch is disabled). `1` disables prefetching. | `4` |
176
- | `complex_types_as_json` | Render complex columns (`ARRAY` / `MAP` / `STRUCT` / `VARIANT` / `GEOMETRY` / `GEOGRAPHY`) as compact JSON strings instead of native Arrow nested types. | `false` |
177
+ | `complex_types_as_json` | Render complex columns (`ARRAY` / `MAP` / `STRUCT` / `VARIANT`) as compact JSON strings instead of native Arrow nested types. Top-level geo columns use `geospatial_result_representation`; nested geo leaves are normalized before the enclosing value is rendered as JSON. | `false` |
177
178
  | `intervals_as_string` | Render `INTERVAL` / `DURATION` columns as canonical Databricks text (e.g. `"Y-M"`, `"D HH:MM:SS.nnnnnnnnn"`) instead of native Arrow interval types. | `false` |
178
179
 
180
+ ## `geospatial_result_representation` — geospatial result encoding (optional)
181
+
182
+ Set with `SessionBuilder::geospatial_result_representation(...)`. Both modes
183
+ keep the outer result format as Arrow; this setting only selects the physical
184
+ Arrow representation of `GEOMETRY` and `GEOGRAPHY` values.
185
+
186
+ | Value | Arrow representation |
187
+ |-------|----------------------|
188
+ | `GeospatialResultRepresentation::String` | Arrow `Utf8` containing WKT / EWKT. |
189
+ | `GeospatialResultRepresentation::Binary` | Arrow `struct<srid: int32 not null, wkb: binary not null>` containing the SRID and little-endian OGC WKB. The WKB itself is not EWKB. This is the default. |
190
+
191
+ Reyden returns every geo value as that native struct; standard DBSQL warehouses
192
+ return WKT / EWKT as Arrow `Utf8` or `LargeUtf8`. The structured manifest
193
+ reports the logical `GEOMETRY(...)` or `GEOGRAPHY(...)` type and is the source
194
+ of truth for either attachment. The kernel normalizes both paths: binary mode
195
+ attaches the canonical tags to a Reyden struct or parses standard-warehouse
196
+ text into the same tagged SRID+WKB struct, while string mode preserves existing
197
+ text or renders a native struct as EWKT. Nested values in arrays, maps, and
198
+ structs, per-row SRIDs, and null outer values are preserved.
199
+
200
+ This is entirely client-side and is never forwarded to SEA. Set it through
201
+ the typed kernel or binding API. An `EnableGeoSpatialSupport` entry placed
202
+ directly in `session_conf` is not interpreted by the kernel and is forwarded
203
+ unchanged; SEA/Reyden does not define that server configuration.
204
+
205
+ Bindings expose the same default-enabled boolean as Python
206
+ `enable_geospatial_support`, Node.js `enableGeoSpatialSupport`, and C
207
+ `kernel_session_config_set_enable_geospatial_support`. Enabled returns the
208
+ native SRID+WKB Arrow representation; disabled returns WKT / EWKT strings.
209
+
210
+ The structured manifest type text is authoritative for identifying geo leaves;
211
+ the attachment supplies the physical values. The same post-processing step
212
+ produces the requested client-facing schema for non-empty and empty results.
213
+ Manifest field metadata preserves the logical type and SRID text under
214
+ `databricks.type_name` and `databricks.type_text`.
215
+
179
216
  ## `LoggingConfig` — logging (optional)
180
217
 
181
218
  | Field | Description | Default |