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.
- databricks_sql_kernel-1.2.0/.github/scripts/check-release-debuginfo.ps1 +154 -0
- databricks_sql_kernel-1.2.0/.github/scripts/check-release-debuginfo.sh +164 -0
- databricks_sql_kernel-1.2.0/.github/workflows/release-debuginfo.yml +138 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CHANGELOG.md +84 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CONNECTION_PARAMETERS.md +38 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Cargo.lock +255 -9
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Cargo.toml +24 -2
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/PKG-INFO +1 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/README.md +5 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/kernel-telemetry-design.md +1 -1
- databricks_sql_kernel-1.2.0/docs/release-debuginfo.md +103 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/spec-v0.md +10 -3
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/include/databricks_kernel.h +209 -13
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/CHANGELOG.md +24 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/Cargo.lock +351 -36
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/Cargo.toml +1 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/executed_async.rs +4 -3
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/lib.rs +1 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/logging.rs +79 -7
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/metadata.rs +3 -3
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/result_stream.rs +5 -4
- databricks_sql_kernel-1.2.0/pyo3/src/runtime.rs +142 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/session.rs +126 -27
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/statement.rs +12 -10
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyproject.toml +1 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt_m2m.rs +41 -3
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/m2m.rs +246 -26
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/mod.rs +120 -1
- databricks_sql_kernel-1.2.0/src/c_abi/result.rs +1022 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/session.rs +389 -45
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/statement.rs +523 -23
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/http.rs +130 -17
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/mod.rs +2 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/retry.rs +7 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/sea.rs +1077 -109
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/client/transport.rs +40 -6
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/config.rs +118 -22
- databricks_sql_kernel-1.2.0/src/feature_flags/cache.rs +217 -0
- databricks_sql_kernel-1.2.0/src/feature_flags/mod.rs +1039 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/kernel_error.rs +1 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/lib.rs +12 -3
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/sql.rs +38 -34
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/thrift_shape.rs +329 -44
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/type_mapping.rs +394 -43
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata_v0.rs +522 -73
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/chunk_downloader.rs +32 -4
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/link_fetcher.rs +14 -10
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/streaming_provider.rs +1313 -42
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/provider.rs +8 -8
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/streaming.rs +215 -39
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/mod.rs +469 -41
- databricks_sql_kernel-1.2.0/src/reader/post_processor/geospatial.rs +2254 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/post_processor/json.rs +9 -12
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/post_processor/mod.rs +435 -63
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/test_utils.rs +64 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/result_stream.rs +50 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/session.rs +550 -36
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/executed.rs +27 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/executed_async.rs +259 -19
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/mod.rs +2 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/mutable.rs +153 -15
- databricks_sql_kernel-1.2.0/src/statement/timeout.rs +210 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/client.rs +4 -4
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/manager.rs +5 -5
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/models.rs +1 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/runtime.rs +43 -6
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/cloudfetch.rs +35 -2
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/sea.rs +141 -9
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c/session_smoke.c +33 -0
- databricks_sql_kernel-1.2.0/tests/symbols/staticlib_consumer.c +26 -0
- databricks_sql_kernel-1.2.0/tests/tls_rustls_native_roots.rs +229 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_async_execute_wiremock.rs +313 -1
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_canceller_wiremock.rs +950 -13
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_result_config_wiremock.rs +49 -4
- databricks_sql_kernel-1.2.0/tests/v0_c_abi_result_stream_canceller_wiremock.rs +155 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_session_test_wiremock.rs +58 -2
- databricks_sql_kernel-1.2.0/tests/v0_execute_wiremock.rs +2903 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_e2e.rs +18 -48
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_wiremock.rs +701 -26
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_session_wiremock.rs +137 -1
- databricks_sql_kernel-1.0.0/src/c_abi/result.rs +0 -399
- databricks_sql_kernel-1.0.0/tests/v0_execute_wiremock.rs +0 -1264
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/config.yaml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/context-repos.yaml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer/system.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer/user.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/engineer-followup/system.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/retrospective_system.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.bot/prompts/review/system.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.claude/knowledge/learning-log.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/CODEOWNERS +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/bot-prelude/action.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/install-bot-engine/action.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/actions/setup-jfrog/action.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/dependabot.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/scripts/check-napi-loader-drift.sh +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/cargo-publish.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/close-stale.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/coverage.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/dco-check.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot-followup.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot-learning.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/engineer-bot.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/license-check.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/napi-checks.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/pr-checks.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/pyo3-checks.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/reviewer-bot-followup.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/reviewer-bot.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/rust-e2e.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/securityScan.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/skip-checks-reporter.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/trigger-coverage-fanout.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.github/workflows/trigger-integration-tests.yml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/.gitignore +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/CLAUDE.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/LICENSE +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/Makefile +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/NEXT_CHANGELOG.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/NOTICE.txt +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/about.toml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/ci/proxy/htpasswd +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/ci/proxy/squid-auth.conf +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/clippy.toml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/deny.toml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-2091-retry-logic-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-4141-azure-service-principal-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/PECOBLR-4146-oauth-token-persistence-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/client-refactor-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/cloudfetch-implementation-plan.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/cloudfetch-pipeline-redesign.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/complex-types-json-stringify.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/connection-metadata-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/fix-duplicate-link-prefetch.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/inline-arrow-results-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/oauth-sprint-plan.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/oauth-u2m-m2m-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/odbc-batch-optimization.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/odbc-metadata-ffi-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/prepared-statement-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/proxy-support-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/result-metadata-propagation.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/tls-config-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/designs/token-federation-design.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/migration-plan.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/pr-4-plan.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/docs/pr-5-plan.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/include/legacy/databricks_metadata_ffi.h +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/license.tpl +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/osv-scanner.toml +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/NEXT_CHANGELOG.md +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/pytest.ini +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/release-notes.txt +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/auth.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/errors.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/fetch.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/macros.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/src/params.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/conftest.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_async.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_auth.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_execute.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_metadata.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_module.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/pyo3/tests/test_session.py +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/release-notes.txt +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/config.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/azure.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/cache.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/cache_crypto.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/callback.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/federation.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/jwt_key.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/oidc.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/test_keys.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/token.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/token_store.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/oauth/u2m.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/auth/pat.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/error.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/c_abi/metadata.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/klog.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/logging.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/schemas.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/metadata/static_data.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/arrow_parser.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/cloudfetch/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/reader/inline/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/result/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/dml_count.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/handle.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/params.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/params_codec.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/spec.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/statement/validity.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/circuit_breaker.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/databricks.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/exporter.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/statement.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/telemetry/test_support.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/types/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/util/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/src/util/runtime.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/bot_e2e_helper.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_conflict.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_panic.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_logging_callback_reentrancy.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/c_abi_mtls_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/common/mod.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/klog_bridge.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/oauth_u2m_integration.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/token_federation_wiremock.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_async_execute_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_metadata_table_types_wiremock.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_c_abi_session_close_wiremock.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_execute_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_logging_wiremock.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_metadata_empty_types_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_query_tags_headers_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_session_e2e.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_statement_canceller_reexecute.rs +0 -0
- {databricks_sql_kernel-1.0.0 → databricks_sql_kernel-1.2.0}/tests/v0_tls_e2e.rs +0 -0
- {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`
|
|
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 |
|