databricks-sql-kernel 0.3.0__tar.gz → 1.0.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-0.3.0 → databricks_sql_kernel-1.0.0}/CHANGELOG.md +6 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/Cargo.lock +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/Cargo.toml +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/PKG-INFO +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/CHANGELOG.md +6 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/Cargo.lock +2 -2
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/Cargo.toml +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/executed_async.rs +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyproject.toml +1 -1
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/session.rs +49 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/executed_async.rs +19 -2
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/appkit/download-release.sh +0 -75
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/appkit/poll-release.sh +0 -85
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-cargo.sh +0 -29
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-coursier.sh +0 -19
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-gradle.sh +0 -65
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-maven.sh +0 -37
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-npm.sh +0 -11
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-pip.sh +0 -7
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/configure-sbt.sh +0 -116
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/deco-dispatch-tagging-single.sh +0 -48
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/deco-dispatch-tagging.sh +0 -107
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/deco-load-maven-creds.sh +0 -88
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/deco-pending-tags.sh +0 -116
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/download-artifact.sh +0 -51
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/extract-changelog.sh +0 -69
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/jfrog-oidc-token.py +0 -77
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/jfrog-oidc-token.sh +0 -27
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/maven-central-publish.sh +0 -288
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/maven-deploy.sh +0 -225
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/mlflow/ts_publish.ts +0 -170
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/mlflow/validate_ts_release.ts +0 -183
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/npm-oidc-publish.sh +0 -112
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/omnigent/site-desktop-feed.mjs +0 -204
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/omnigent/vercel-blob-upload.mjs +0 -139
- databricks_sql_kernel-0.3.0/_release-scripts/.github/scripts/pypi-oidc-publish.sh +0 -128
- databricks_sql_kernel-0.3.0/_release-scripts/CODEOWNERS +0 -141
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/config.yaml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/context-repos.yaml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/prompts/engineer/system.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/prompts/engineer/user.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/prompts/engineer-followup/system.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/prompts/retrospective_system.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.bot/prompts/review/system.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.claude/knowledge/learning-log.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/CODEOWNERS +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/actions/bot-prelude/action.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/actions/install-bot-engine/action.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/actions/setup-jfrog/action.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/dependabot.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/scripts/check-napi-loader-drift.sh +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/cargo-publish.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/close-stale.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/coverage.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/dco-check.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/engineer-bot-followup.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/engineer-bot-learning.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/engineer-bot.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/license-check.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/napi-checks.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/pr-checks.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/pyo3-checks.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/reviewer-bot-followup.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/reviewer-bot.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/rust-e2e.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/securityScan.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/skip-checks-reporter.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/trigger-coverage-fanout.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.github/workflows/trigger-integration-tests.yml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/.gitignore +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/CLAUDE.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/CONNECTION_PARAMETERS.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/LICENSE +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/Makefile +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/NEXT_CHANGELOG.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/NOTICE.txt +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/README.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/about.toml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/ci/proxy/htpasswd +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/ci/proxy/squid-auth.conf +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/clippy.toml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/deny.toml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/PECOBLR-2091-retry-logic-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/PECOBLR-4141-azure-service-principal-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/PECOBLR-4146-oauth-token-persistence-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/client-refactor-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/cloudfetch-implementation-plan.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/cloudfetch-pipeline-redesign.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/complex-types-json-stringify.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/connection-metadata-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/fix-duplicate-link-prefetch.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/inline-arrow-results-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/kernel-telemetry-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/oauth-sprint-plan.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/oauth-u2m-m2m-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/odbc-batch-optimization.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/odbc-metadata-ffi-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/prepared-statement-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/proxy-support-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/result-metadata-propagation.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/tls-config-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/designs/token-federation-design.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/migration-plan.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/pr-4-plan.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/pr-5-plan.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/docs/spec-v0.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/include/databricks_kernel.h +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/include/legacy/databricks_metadata_ffi.h +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/license.tpl +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/osv-scanner.toml +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/NEXT_CHANGELOG.md +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/pytest.ini +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/release-notes.txt +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/auth.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/errors.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/fetch.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/lib.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/logging.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/macros.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/metadata.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/params.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/result_stream.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/session.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/src/statement.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/conftest.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_async.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_auth.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_execute.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_metadata.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_module.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/pyo3/tests/test_session.py +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/release-notes.txt +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/config.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/azure.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/cache.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/cache_crypto.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/callback.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/federation.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/jwt.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/jwt_key.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/jwt_m2m.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/m2m.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/oidc.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/test_keys.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/token.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/token_store.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/oauth/u2m.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/auth/pat.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/error.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/metadata.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/result.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/session.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/c_abi/statement.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/client/http.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/client/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/client/retry.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/client/sea.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/client/transport.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/config.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/kernel_error.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/klog.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/lib.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/logging.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/schemas.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/sql.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/static_data.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/thrift_shape.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata/type_mapping.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/metadata_v0.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/cloudfetch/arrow_parser.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/cloudfetch/chunk_downloader.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/cloudfetch/link_fetcher.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/cloudfetch/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/cloudfetch/streaming_provider.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/inline/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/inline/provider.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/inline/streaming.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/post_processor/json.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/post_processor/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/reader/test_utils.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/result/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/result_stream.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/dml_count.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/executed.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/handle.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/mutable.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/params.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/params_codec.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/spec.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/statement/validity.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/circuit_breaker.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/client.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/databricks.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/exporter.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/manager.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/models.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/runtime.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/statement.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/telemetry/test_support.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/types/cloudfetch.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/types/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/types/sea.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/util/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/src/util/runtime.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/bot_e2e_helper.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c/session_smoke.c +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c_abi_logging_callback.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c_abi_logging_callback_conflict.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c_abi_logging_callback_panic.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c_abi_logging_callback_reentrancy.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/c_abi_mtls_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/common/mod.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/klog_bridge.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/oauth_u2m_integration.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/token_federation_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_async_execute_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_async_execute_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_c_abi_canceller_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_c_abi_metadata_table_types_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_c_abi_result_config_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_c_abi_session_close_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_c_abi_session_test_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_execute_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_execute_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_logging_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_metadata_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_metadata_empty_types_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_metadata_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_query_tags_headers_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_session_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_session_wiremock.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_statement_canceller_reexecute.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_tls_e2e.rs +0 -0
- {databricks_sql_kernel-0.3.0 → databricks_sql_kernel-1.0.0}/tests/v0_transactions_e2e.rs +0 -0
|
@@ -14,6 +14,12 @@ cadences and may not move in lockstep with the crate.
|
|
|
14
14
|
|
|
15
15
|
### Fixed
|
|
16
16
|
|
|
17
|
+
## [v1.0.0] - 2026-08-31
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- Explicit async statement close finalizes telemetry when a partially consumed
|
|
21
|
+
result stream remains alive.
|
|
22
|
+
|
|
17
23
|
## [v0.3.0] - 2026-08-28
|
|
18
24
|
|
|
19
25
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: databricks-sql-kernel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Requires-Dist: pyarrow>=23.0.1,<24 ; python_full_version >= '3.10'
|
|
5
5
|
Requires-Dist: pyarrow>=14,<19 ; python_full_version < '3.10'
|
|
6
6
|
Summary: Python bindings for the Databricks SQL Kernel (PyO3)
|
|
@@ -546,7 +546,7 @@ dependencies = [
|
|
|
546
546
|
|
|
547
547
|
[[package]]
|
|
548
548
|
name = "databricks-sql-kernel"
|
|
549
|
-
version = "0.
|
|
549
|
+
version = "1.0.0"
|
|
550
550
|
dependencies = [
|
|
551
551
|
"aes 0.9.2",
|
|
552
552
|
"arrow-array",
|
|
@@ -586,7 +586,7 @@ dependencies = [
|
|
|
586
586
|
|
|
587
587
|
[[package]]
|
|
588
588
|
name = "databricks-sql-kernel-pyo3"
|
|
589
|
-
version = "0.
|
|
589
|
+
version = "1.0.0"
|
|
590
590
|
dependencies = [
|
|
591
591
|
"arrow-array",
|
|
592
592
|
"arrow-pyarrow",
|
|
@@ -133,7 +133,7 @@ impl ExecutedAsyncStatement {
|
|
|
133
133
|
return Ok(());
|
|
134
134
|
};
|
|
135
135
|
let runtime = inner.runtime.clone();
|
|
136
|
-
let res = run_kernel!(py, runtime, inner.exec
|
|
136
|
+
let res = run_kernel!(py, runtime, KExecutedAsyncStatement::close(&mut inner.exec));
|
|
137
137
|
self.inner = None;
|
|
138
138
|
res.map(|_| ())
|
|
139
139
|
}
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "databricks-sql-kernel"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "1.0.0"
|
|
8
8
|
description = "Python bindings for the Databricks SQL Kernel (PyO3)"
|
|
9
9
|
# Floor matches the tested CI matrix in
|
|
10
10
|
# .github/workflows/pyo3-checks.yml (3.9 .. 3.14). The abi3-py39
|
|
@@ -2424,6 +2424,55 @@ mod is_open_tests {
|
|
|
2424
2424
|
);
|
|
2425
2425
|
}
|
|
2426
2426
|
|
|
2427
|
+
#[tokio::test]
|
|
2428
|
+
async fn async_statement_close_finalizes_partial_result_telemetry() {
|
|
2429
|
+
let server = MockServer::start().await;
|
|
2430
|
+
mount_session_create_delete(&server, "sess-telemetry-async-partial-close").await;
|
|
2431
|
+
mount_close_any_statement(&server).await;
|
|
2432
|
+
mount_execute(&server, running_body("stmt-telemetry-async-partial-close")).await;
|
|
2433
|
+
mount_status(
|
|
2434
|
+
&server,
|
|
2435
|
+
"stmt-telemetry-async-partial-close",
|
|
2436
|
+
succeeded_inline_body(
|
|
2437
|
+
"stmt-telemetry-async-partial-close",
|
|
2438
|
+
&int64_batch("n", vec![1]),
|
|
2439
|
+
),
|
|
2440
|
+
)
|
|
2441
|
+
.await;
|
|
2442
|
+
let exporter = CapturingTelemetryExporter::default();
|
|
2443
|
+
let telemetry = TelemetryConfig {
|
|
2444
|
+
enabled: true,
|
|
2445
|
+
..Default::default()
|
|
2446
|
+
}
|
|
2447
|
+
.with_exporter(std::sync::Arc::new(exporter.clone()));
|
|
2448
|
+
let session =
|
|
2449
|
+
telemetry_test_session(&server, "sess-telemetry-async-partial-close", telemetry).await;
|
|
2450
|
+
|
|
2451
|
+
let mut stmt = session.statement();
|
|
2452
|
+
stmt.spec().sql("SELECT 1 AS n");
|
|
2453
|
+
let mut async_exec = stmt.submit().await.expect("submit succeeds");
|
|
2454
|
+
let mut stream = async_exec.await_result().await.expect("await succeeds");
|
|
2455
|
+
assert!(stream.next_batch().await.expect("first batch").is_some());
|
|
2456
|
+
|
|
2457
|
+
async_exec.close().await.expect("close succeeds");
|
|
2458
|
+
session.close().await.expect("close succeeds");
|
|
2459
|
+
|
|
2460
|
+
let async_statement_logs = exported_logs(&exporter)
|
|
2461
|
+
.into_iter()
|
|
2462
|
+
.filter(|log| operation_type(log) == Some("EXECUTE_STATEMENT_ASYNC"))
|
|
2463
|
+
.collect::<Vec<_>>();
|
|
2464
|
+
assert_eq!(
|
|
2465
|
+
async_statement_logs.len(),
|
|
2466
|
+
1,
|
|
2467
|
+
"partial async result close should finalize telemetry once even while \
|
|
2468
|
+
the result stream is still live"
|
|
2469
|
+
);
|
|
2470
|
+
assert_eq!(
|
|
2471
|
+
async_statement_logs[0]["entry"]["sql_driver_log"]["sql_statement_id"],
|
|
2472
|
+
"stmt-telemetry-async-partial-close"
|
|
2473
|
+
);
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2427
2476
|
#[tokio::test]
|
|
2428
2477
|
async fn async_statement_status_failure_exports_error_telemetry() {
|
|
2429
2478
|
let server = MockServer::start().await;
|
|
@@ -731,6 +731,25 @@ impl ExecutedStatementHandle for ExecutedAsyncStatement {
|
|
|
731
731
|
}
|
|
732
732
|
|
|
733
733
|
async fn close(&self) -> Result<()> {
|
|
734
|
+
self.close_server_statement().await
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
impl ExecutedAsyncStatement {
|
|
739
|
+
/// Explicit close for concrete async statements.
|
|
740
|
+
///
|
|
741
|
+
/// Once [`await_result`](Self::await_result) / [`fetch_result`](Self::fetch_result)
|
|
742
|
+
/// returns a [`ResultStream`], that stream owns success finalization so full
|
|
743
|
+
/// result consumption can include result metrics. Explicitly closing the owning
|
|
744
|
+
/// async statement is the binding-visible lifecycle boundary, though, so finalize
|
|
745
|
+
/// here as a deterministic backstop for partial-fetch callers that keep the stream
|
|
746
|
+
/// alive past session close.
|
|
747
|
+
pub async fn close(&mut self) -> Result<()> {
|
|
748
|
+
self.statement_telemetry.finalize(None);
|
|
749
|
+
self.close_server_statement().await
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
async fn close_server_statement(&self) -> Result<()> {
|
|
734
753
|
// Idempotent on success: a prior successful close sets
|
|
735
754
|
// `closed=true` and subsequent calls short-circuit.
|
|
736
755
|
//
|
|
@@ -767,9 +786,7 @@ impl ExecutedStatementHandle for ExecutedAsyncStatement {
|
|
|
767
786
|
.instrument(self.session.log_span().clone())
|
|
768
787
|
.await
|
|
769
788
|
}
|
|
770
|
-
}
|
|
771
789
|
|
|
772
|
-
impl ExecutedAsyncStatement {
|
|
773
790
|
/// Produce a detached [`AsyncStatementCanceller`] that can fire a
|
|
774
791
|
/// server-side cancel for this statement *without borrowing the
|
|
775
792
|
/// handle*.
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
# Downloads a release artifact from databricks/appkit, extracts it, and
|
|
5
|
-
# resolves version/tag/stream metadata.
|
|
6
|
-
#
|
|
7
|
-
# Requires: GH_TOKEN, RUN_ID, OUTPUT_DIR
|
|
8
|
-
# Writes to $GITHUB_OUTPUT: run-id, head-sha, version, tag, stream
|
|
9
|
-
|
|
10
|
-
REPO="databricks/appkit"
|
|
11
|
-
|
|
12
|
-
# Validate the run completed successfully and extract head SHA
|
|
13
|
-
run_json=$(gh api "repos/${REPO}/actions/runs/${RUN_ID}")
|
|
14
|
-
run_status=$(echo "$run_json" | jq -r '.conclusion')
|
|
15
|
-
head_sha=$(echo "$run_json" | jq -r '.head_sha')
|
|
16
|
-
|
|
17
|
-
if [[ ! "$head_sha" =~ ^[0-9a-f]{40}$ ]]; then
|
|
18
|
-
echo "::error::Run ${RUN_ID} returned invalid head_sha: '${head_sha}'"
|
|
19
|
-
exit 1
|
|
20
|
-
fi
|
|
21
|
-
|
|
22
|
-
if [[ "$run_status" != "success" ]]; then
|
|
23
|
-
echo "::error::Run ${RUN_ID} has conclusion '${run_status}', expected 'success'"
|
|
24
|
-
exit 1
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
echo "run-id=${RUN_ID}" >> "$GITHUB_OUTPUT"
|
|
28
|
-
echo "head-sha=${head_sha}" >> "$GITHUB_OUTPUT"
|
|
29
|
-
|
|
30
|
-
# Find the release artifact
|
|
31
|
-
artifact_json=$(gh api "repos/${REPO}/actions/runs/${RUN_ID}/artifacts" \
|
|
32
|
-
--jq '.artifacts[] | select(.name | test("^(appkit|lakebase)-release-[0-9]"))')
|
|
33
|
-
|
|
34
|
-
artifact_id=$(echo "$artifact_json" | jq -r '.id' | head -1)
|
|
35
|
-
artifact_name=$(echo "$artifact_json" | jq -r '.name' | head -1)
|
|
36
|
-
artifact_expired=$(echo "$artifact_json" | jq -r '.expired' | head -1)
|
|
37
|
-
|
|
38
|
-
if [[ -z "$artifact_id" || "$artifact_id" == "null" ]]; then
|
|
39
|
-
echo "::error::No release artifact found for run ${RUN_ID}"
|
|
40
|
-
exit 1
|
|
41
|
-
fi
|
|
42
|
-
|
|
43
|
-
if [[ "$artifact_expired" == "true" ]]; then
|
|
44
|
-
echo "::error::Release artifact for run ${RUN_ID} has expired, cannot download"
|
|
45
|
-
exit 1
|
|
46
|
-
fi
|
|
47
|
-
|
|
48
|
-
echo "Downloading artifact: ${artifact_name} (ID: ${artifact_id})"
|
|
49
|
-
|
|
50
|
-
mkdir -p "${OUTPUT_DIR}"
|
|
51
|
-
curl -sfL \
|
|
52
|
-
-H "Authorization: Bearer ${GH_TOKEN}" \
|
|
53
|
-
-o "${OUTPUT_DIR}/release.zip" \
|
|
54
|
-
"https://api.github.com/repos/${REPO}/actions/artifacts/${artifact_id}/zip"
|
|
55
|
-
|
|
56
|
-
unzip -q "${OUTPUT_DIR}/release.zip" -d "${OUTPUT_DIR}/"
|
|
57
|
-
rm "${OUTPUT_DIR}/release.zip"
|
|
58
|
-
|
|
59
|
-
echo "Downloaded files:"
|
|
60
|
-
ls -la "${OUTPUT_DIR}/"
|
|
61
|
-
|
|
62
|
-
# Resolve version, tag, stream from downloaded artifacts
|
|
63
|
-
VERSION=$(cat "${OUTPUT_DIR}/VERSION")
|
|
64
|
-
if [[ "$artifact_name" == lakebase-* ]]; then
|
|
65
|
-
STREAM="lakebase"
|
|
66
|
-
TAG="lakebase-v${VERSION}"
|
|
67
|
-
else
|
|
68
|
-
STREAM="appkit"
|
|
69
|
-
TAG="v${VERSION}"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
|
|
73
|
-
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
|
74
|
-
echo "stream=${STREAM}" >> "$GITHUB_OUTPUT"
|
|
75
|
-
echo "Resolved: run=${RUN_ID} version=${VERSION} tag=${TAG} stream=${STREAM}"
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
# Polls for unprocessed appkit/lakebase release runs.
|
|
5
|
-
# Checks both prepare-release and prepare-release-lakebase workflows,
|
|
6
|
-
# downloads the meta artifact (VERSION file), and verifies the tag
|
|
7
|
-
# doesn't already exist.
|
|
8
|
-
#
|
|
9
|
-
# Requires: GH_TOKEN (GitHub App token with read access to databricks/appkit)
|
|
10
|
-
# Writes to $GITHUB_OUTPUT: run-id, version, tag, stream
|
|
11
|
-
|
|
12
|
-
REPO="databricks/appkit"
|
|
13
|
-
|
|
14
|
-
# Check lakebase first — appkit depends on lakebase, so lakebase must publish first
|
|
15
|
-
for workflow_name in "prepare-release-lakebase" "prepare-release"; do
|
|
16
|
-
# Get latest successful completed run
|
|
17
|
-
run_json=$(gh api "repos/${REPO}/actions/workflows/${workflow_name}.yml/runs?status=success&per_page=1" \
|
|
18
|
-
--jq '.workflow_runs[0] // empty')
|
|
19
|
-
|
|
20
|
-
if [[ -z "$run_json" ]]; then
|
|
21
|
-
echo "No successful runs found for ${workflow_name}"
|
|
22
|
-
continue
|
|
23
|
-
fi
|
|
24
|
-
|
|
25
|
-
run_id=$(echo "$run_json" | jq -r '.id')
|
|
26
|
-
|
|
27
|
-
# Look for meta artifact (small, just VERSION file).
|
|
28
|
-
# Skip expired ones: the artifact 410s and that version is already released.
|
|
29
|
-
meta_artifact_id=$(gh api "repos/${REPO}/actions/runs/${run_id}/artifacts" \
|
|
30
|
-
--jq '.artifacts[] | select(.name | test("release-meta-")) | select(.expired == false) | .id' | head -1)
|
|
31
|
-
|
|
32
|
-
if [[ -z "$meta_artifact_id" ]]; then
|
|
33
|
-
echo "Warning: no live meta artifact for run ${run_id} (missing or expired), skipping ${workflow_name}" >&2
|
|
34
|
-
continue
|
|
35
|
-
fi
|
|
36
|
-
|
|
37
|
-
# Download small meta artifact to read VERSION
|
|
38
|
-
tmpdir=$(mktemp -d)
|
|
39
|
-
curl -sfL \
|
|
40
|
-
-H "Authorization: Bearer ${GH_TOKEN}" \
|
|
41
|
-
-o "${tmpdir}/meta.zip" \
|
|
42
|
-
"https://api.github.com/repos/${REPO}/actions/artifacts/${meta_artifact_id}/zip"
|
|
43
|
-
unzip -q "${tmpdir}/meta.zip" -d "${tmpdir}/extracted"
|
|
44
|
-
|
|
45
|
-
if [[ ! -f "${tmpdir}/extracted/VERSION" ]]; then
|
|
46
|
-
echo "No VERSION file in meta artifact for run ${run_id}"
|
|
47
|
-
rm -rf "$tmpdir"
|
|
48
|
-
continue
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
version=$(cat "${tmpdir}/extracted/VERSION")
|
|
52
|
-
rm -rf "$tmpdir"
|
|
53
|
-
|
|
54
|
-
# Determine tag and stream
|
|
55
|
-
if [[ "$workflow_name" == "prepare-release" ]]; then
|
|
56
|
-
tag="v${version}"
|
|
57
|
-
stream="appkit"
|
|
58
|
-
else
|
|
59
|
-
tag="lakebase-v${version}"
|
|
60
|
-
stream="lakebase"
|
|
61
|
-
fi
|
|
62
|
-
|
|
63
|
-
# Check if tag already exists (already released)
|
|
64
|
-
if gh api "repos/${REPO}/git/refs/tags/${tag}" &>/dev/null; then
|
|
65
|
-
echo "Tag ${tag} already exists, skipping"
|
|
66
|
-
continue
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
# Check if a newer run is in progress
|
|
70
|
-
in_progress=$(gh api "repos/${REPO}/actions/workflows/${workflow_name}.yml/runs?status=in_progress&per_page=1" \
|
|
71
|
-
--jq '.total_count')
|
|
72
|
-
if [[ "$in_progress" -gt 0 ]]; then
|
|
73
|
-
echo "A newer ${workflow_name} run is in progress, waiting"
|
|
74
|
-
continue
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
echo "Found unprocessed run: ${run_id} (${stream} v${version})"
|
|
78
|
-
echo "run-id=${run_id}" >> "$GITHUB_OUTPUT"
|
|
79
|
-
echo "version=${version}" >> "$GITHUB_OUTPUT"
|
|
80
|
-
echo "tag=${tag}" >> "$GITHUB_OUTPUT"
|
|
81
|
-
echo "stream=${stream}" >> "$GITHUB_OUTPUT"
|
|
82
|
-
exit 0
|
|
83
|
-
done
|
|
84
|
-
|
|
85
|
-
echo "No unprocessed release runs found"
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Point cargo at the internal JFrog crates index (sparse registry).
|
|
3
|
-
# Expects JFROG_ACCESS_TOKEN in the environment (e.g. from jfrog-oidc-token.sh).
|
|
4
|
-
# Appends CARGO_REGISTRIES_JFROG_TOKEN to $GITHUB_ENV when set.
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
mkdir -p ~/.cargo
|
|
8
|
-
cat > ~/.cargo/config.toml << EOF
|
|
9
|
-
[source.crates-io]
|
|
10
|
-
replace-with = "jfrog"
|
|
11
|
-
|
|
12
|
-
[source.jfrog]
|
|
13
|
-
registry = "sparse+https://databricks.jfrog.io/artifactory/api/cargo/db-cargo-remote/index/"
|
|
14
|
-
|
|
15
|
-
[registries.jfrog]
|
|
16
|
-
index = "sparse+https://databricks.jfrog.io/artifactory/api/cargo/db-cargo-remote/index/"
|
|
17
|
-
credential-provider = ["cargo:token"]
|
|
18
|
-
EOF
|
|
19
|
-
|
|
20
|
-
cat > ~/.cargo/credentials.toml << EOF
|
|
21
|
-
[registries.jfrog]
|
|
22
|
-
token = "Bearer ${JFROG_ACCESS_TOKEN}"
|
|
23
|
-
EOF
|
|
24
|
-
|
|
25
|
-
if [[ -n "${GITHUB_ENV:-}" ]]; then
|
|
26
|
-
echo "CARGO_REGISTRIES_JFROG_TOKEN=Bearer ${JFROG_ACCESS_TOKEN}" >> "$GITHUB_ENV"
|
|
27
|
-
fi
|
|
28
|
-
|
|
29
|
-
echo "Cargo configured to use JFrog registry"
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Point coursier based build tools at the internal JFrog registry.
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
JFROG_HOST="databricks.jfrog.io"
|
|
6
|
-
JFROG_REALM="Artifactory Realm"
|
|
7
|
-
JFROG_USERNAME="gha-service-account"
|
|
8
|
-
|
|
9
|
-
mkdir -p ~/.config/coursier
|
|
10
|
-
{
|
|
11
|
-
echo "jfrog.host=${JFROG_HOST}"
|
|
12
|
-
echo "jfrog.realm=${JFROG_REALM}"
|
|
13
|
-
echo "jfrog.username=${JFROG_USERNAME}"
|
|
14
|
-
echo "jfrog.password=${JFROG_ACCESS_TOKEN}"
|
|
15
|
-
} > ~/.config/coursier/credentials.properties
|
|
16
|
-
|
|
17
|
-
echo "COURSIER_REPOSITORIES=https://${JFROG_HOST}/artifactory/db-maven" >> "$GITHUB_ENV"
|
|
18
|
-
|
|
19
|
-
echo "Coursier configured to use JFrog registry"
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# configure-gradle.sh — Route Gradle dependency resolution entirely through
|
|
3
|
-
# JFrog, so the runner never reaches the public Maven repos directly.
|
|
4
|
-
#
|
|
5
|
-
# Writes ~/.gradle/init.d/jfrog-mirror.gradle, an init script that clears and
|
|
6
|
-
# replaces ALL three repository handlers with JFrog-only repos (db-maven +
|
|
7
|
-
# db-maven-google), so the runner never reaches public Maven repos:
|
|
8
|
-
# 1. beforeSettings — pluginManagement.repositories (Gradle plugins)
|
|
9
|
-
# 2. settingsEvaluated — dependencyResolutionManagement.repositories (deps)
|
|
10
|
-
# 3. allprojects — buildscript.repositories (build plugins)
|
|
11
|
-
# If a plugin/artifact is on neither db-maven nor db-maven-google, the build
|
|
12
|
-
# fails loudly rather than silently falling back to the public internet.
|
|
13
|
-
#
|
|
14
|
-
# The source repo sets repositoriesMode = FAIL_ON_PROJECT_REPOS, so this script
|
|
15
|
-
# deliberately does NOT add project-level repositories (allprojects.repositories)
|
|
16
|
-
# — doing so would fail the build. Dependencies resolve through the
|
|
17
|
-
# settings-level dependencyResolutionManagement repos replaced in step 2.
|
|
18
|
-
#
|
|
19
|
-
# Requires JFROG_ACCESS_TOKEN (set by jfrog-oidc-token.sh).
|
|
20
|
-
set -euo pipefail
|
|
21
|
-
|
|
22
|
-
: "${JFROG_ACCESS_TOKEN:?JFROG_ACCESS_TOKEN is required. Run jfrog-oidc-token.sh first.}"
|
|
23
|
-
|
|
24
|
-
mkdir -p ~/.gradle/init.d
|
|
25
|
-
cat > ~/.gradle/init.d/jfrog-mirror.gradle <<'GRADLE'
|
|
26
|
-
def jfrogUser = 'gha-service-account'
|
|
27
|
-
def jfrogPass = System.getenv('JFROG_ACCESS_TOKEN')
|
|
28
|
-
|
|
29
|
-
// db-maven: Maven virtual repo — proxies Maven Central (+ other Maven remotes).
|
|
30
|
-
// db-maven-google: remote repo proxying dl.google.com/dl/android/maven2/ —
|
|
31
|
-
// hosts androidx.*, com.android.tools.*, AGP (NOT on Maven Central).
|
|
32
|
-
def addRepo = { handler, repoUrl ->
|
|
33
|
-
handler.maven {
|
|
34
|
-
url = repoUrl
|
|
35
|
-
credentials {
|
|
36
|
-
username = jfrogUser
|
|
37
|
-
password = jfrogPass
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
def addJfrogRepos = { handler ->
|
|
42
|
-
addRepo(handler, 'https://databricks.jfrog.io/artifactory/db-maven/')
|
|
43
|
-
addRepo(handler, 'https://databricks.jfrog.io/artifactory/db-maven-google/')
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
beforeSettings { settings ->
|
|
47
|
-
def repos = settings.pluginManagement.repositories
|
|
48
|
-
repos.clear()
|
|
49
|
-
addJfrogRepos(repos)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
settingsEvaluated { settings ->
|
|
53
|
-
def repos = settings.dependencyResolutionManagement.repositories
|
|
54
|
-
repos.clear()
|
|
55
|
-
addJfrogRepos(repos)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
allprojects {
|
|
59
|
-
def repos = buildscript.repositories
|
|
60
|
-
repos.clear()
|
|
61
|
-
addJfrogRepos(repos)
|
|
62
|
-
}
|
|
63
|
-
GRADLE
|
|
64
|
-
|
|
65
|
-
echo "Gradle configured to use JFrog (db-maven + db-maven-google) registry"
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
# Configure Maven to resolve dependencies through the JFrog mirror.
|
|
5
|
-
# Writes ~/.m2/settings.xml with mirror and server credentials.
|
|
6
|
-
#
|
|
7
|
-
# The JFrog db-maven virtual repo proxies Maven Central for project
|
|
8
|
-
# dependencies. All artifact resolution is routed through JFrog.
|
|
9
|
-
#
|
|
10
|
-
# Requires JFROG_ACCESS_TOKEN to be set in the environment.
|
|
11
|
-
|
|
12
|
-
: "${JFROG_ACCESS_TOKEN:?JFROG_ACCESS_TOKEN is required}"
|
|
13
|
-
|
|
14
|
-
mkdir -p ~/.m2
|
|
15
|
-
cat > ~/.m2/settings.xml << 'SETTINGS_TEMPLATE'
|
|
16
|
-
<settings>
|
|
17
|
-
<mirrors>
|
|
18
|
-
<mirror>
|
|
19
|
-
<id>jfrog-central</id>
|
|
20
|
-
<mirrorOf>*</mirrorOf>
|
|
21
|
-
<url>https://databricks.jfrog.io/artifactory/db-maven/</url>
|
|
22
|
-
</mirror>
|
|
23
|
-
</mirrors>
|
|
24
|
-
<servers>
|
|
25
|
-
<server>
|
|
26
|
-
<id>jfrog-central</id>
|
|
27
|
-
<username>gha-service-account</username>
|
|
28
|
-
<password>JFROG_TOKEN_PLACEHOLDER</password>
|
|
29
|
-
</server>
|
|
30
|
-
</servers>
|
|
31
|
-
</settings>
|
|
32
|
-
SETTINGS_TEMPLATE
|
|
33
|
-
|
|
34
|
-
# Substitute the token (avoids exposing it in a heredoc that uses shell expansion).
|
|
35
|
-
sed -i "s|JFROG_TOKEN_PLACEHOLDER|${JFROG_ACCESS_TOKEN}|" ~/.m2/settings.xml
|
|
36
|
-
|
|
37
|
-
echo "Maven configured to use JFrog registry"
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Point npm at the internal JFrog npm registry.
|
|
3
|
-
# Reads JFROG_ACCESS_TOKEN from the environment.
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
cat > ~/.npmrc << EOF
|
|
7
|
-
registry=https://databricks.jfrog.io/artifactory/api/npm/db-npm/
|
|
8
|
-
//databricks.jfrog.io/artifactory/api/npm/db-npm/:_authToken=${JFROG_ACCESS_TOKEN}
|
|
9
|
-
always-auth=true
|
|
10
|
-
EOF
|
|
11
|
-
echo "npm configured to use JFrog registry"
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# Point pip at the internal JFrog PyPI registry.
|
|
3
|
-
# Reads JFROG_ACCESS_TOKEN from the environment and writes PIP_INDEX_URL to $GITHUB_ENV.
|
|
4
|
-
set -euo pipefail
|
|
5
|
-
|
|
6
|
-
echo "PIP_INDEX_URL=https://gha-service-account:${JFROG_ACCESS_TOKEN}@databricks.jfrog.io/artifactory/api/pypi/db-pypi/simple" >> "$GITHUB_ENV"
|
|
7
|
-
echo "pip configured to use JFrog registry"
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# configure-sbt.sh — Configure SBT/Coursier to resolve all dependencies through JFrog.
|
|
3
|
-
#
|
|
4
|
-
# Requires:
|
|
5
|
-
# JFROG_ACCESS_TOKEN — already set by jfrog-oidc-token.sh
|
|
6
|
-
# GITHUB_ENV — GitHub Actions env file (set automatically by the runner)
|
|
7
|
-
#
|
|
8
|
-
# Detects repo type automatically:
|
|
9
|
-
# Delta-style: build/sbt-config/repositories exists → overwrite with JFrog repos
|
|
10
|
-
# UC-style: no repos file → set MAVEN_PROXY_URL for UC's build/sbt
|
|
11
|
-
|
|
12
|
-
set -euo pipefail
|
|
13
|
-
|
|
14
|
-
if [[ -z "${JFROG_ACCESS_TOKEN:-}" ]]; then
|
|
15
|
-
echo "::error::JFROG_ACCESS_TOKEN is not set. Run jfrog-oidc-token.sh first."
|
|
16
|
-
exit 1
|
|
17
|
-
fi
|
|
18
|
-
|
|
19
|
-
JFROG_MAVEN_URL="https://databricks.jfrog.io/artifactory/db-maven"
|
|
20
|
-
|
|
21
|
-
# ── Repo-type detection ─────────────────────────────────────────────
|
|
22
|
-
if [[ -f "build/sbt-config/repositories" ]]; then
|
|
23
|
-
echo "Detected Delta-style repo (build/sbt-config/repositories exists)"
|
|
24
|
-
|
|
25
|
-
# Overwrite SBT repository config to route all resolution through JFrog.
|
|
26
|
-
# build/sbt unconditionally sets -Dsbt.override.build.repos=true pointing
|
|
27
|
-
# to this file.
|
|
28
|
-
cat > build/sbt-config/repositories << 'REPOS'
|
|
29
|
-
[repositories]
|
|
30
|
-
local
|
|
31
|
-
local-preloaded-ivy: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
|
|
32
|
-
local-preloaded: file:///${sbt.preloaded-${sbt.global.base-${user.home}/.sbt}/preloaded/}
|
|
33
|
-
jfrog-maven: https://databricks.jfrog.io/artifactory/db-maven/
|
|
34
|
-
jfrog-ivy: https://databricks.jfrog.io/artifactory/db-maven/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
|
|
35
|
-
REPOS
|
|
36
|
-
else
|
|
37
|
-
echo "Detected UC-style repo (no build/sbt-config/repositories)"
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
# MAVEN_PROXY_URL — UC's build/sbt reads this natively; Delta's SBT uses it
|
|
41
|
-
# when auto-building UC from source (ensurePinnedUnityCatalog).
|
|
42
|
-
# No trailing slash — sbt-launch-lib.bash concatenates "/org/..." directly.
|
|
43
|
-
echo "MAVEN_PROXY_URL=${JFROG_MAVEN_URL}" >> "$GITHUB_ENV"
|
|
44
|
-
|
|
45
|
-
# DEFAULT_ARTIFACT_REPOSITORY — fallback used by sbt-launch-lib.bash for
|
|
46
|
-
# the launcher JAR download when MAVEN_PROXY_URL is unset at launcher time.
|
|
47
|
-
echo "DEFAULT_ARTIFACT_REPOSITORY=${JFROG_MAVEN_URL}" >> "$GITHUB_ENV"
|
|
48
|
-
|
|
49
|
-
# ── Coursier credentials ────────────────────────────────────────────
|
|
50
|
-
mkdir -p ~/.config/coursier
|
|
51
|
-
cat > ~/.config/coursier/credentials.properties << EOF
|
|
52
|
-
jfrog.host=databricks.jfrog.io
|
|
53
|
-
jfrog.realm=Artifactory Realm
|
|
54
|
-
jfrog.username=gha-service-account
|
|
55
|
-
jfrog.password=${JFROG_ACCESS_TOKEN}
|
|
56
|
-
EOF
|
|
57
|
-
|
|
58
|
-
# ── Coursier mirror — redirect Maven Central + Google mirror to JFrog ──
|
|
59
|
-
cat > ~/.config/coursier/mirror.properties << 'MIRROR'
|
|
60
|
-
central.from=https://repo1.maven.org/maven2
|
|
61
|
-
central.to=https://databricks.jfrog.io/artifactory/db-maven/
|
|
62
|
-
google.from=https://maven-central.storage-download.googleapis.com/maven2
|
|
63
|
-
google.to=https://databricks.jfrog.io/artifactory/db-maven/
|
|
64
|
-
MIRROR
|
|
65
|
-
|
|
66
|
-
# ── SBT credentials (Ivy resolution in meta-build) ─────────────────
|
|
67
|
-
mkdir -p ~/.sbt ~/.sbt/1.0
|
|
68
|
-
cat > ~/.sbt/.credentials << EOF
|
|
69
|
-
realm=Artifactory Realm
|
|
70
|
-
host=databricks.jfrog.io
|
|
71
|
-
user=gha-service-account
|
|
72
|
-
password=${JFROG_ACCESS_TOKEN}
|
|
73
|
-
EOF
|
|
74
|
-
|
|
75
|
-
cat > ~/.sbt/1.0/global.sbt << 'SBT'
|
|
76
|
-
credentials += Credentials(Path.userHome / ".sbt" / ".credentials")
|
|
77
|
-
SBT
|
|
78
|
-
|
|
79
|
-
# ── .netrc + .curlrc — for SBT launcher download via curl ──────────
|
|
80
|
-
printf 'machine databricks.jfrog.io\n login gha-service-account\n password %s\n' \
|
|
81
|
-
"${JFROG_ACCESS_TOKEN}" > ~/.netrc
|
|
82
|
-
chmod 600 ~/.netrc
|
|
83
|
-
echo "--netrc-optional" > ~/.curlrc
|
|
84
|
-
|
|
85
|
-
# ── Patch meta-build sbt-assembly ───────────────────────────────────
|
|
86
|
-
# project/project/plugins.sbt may pin an old Ivy-only version (0.14.9)
|
|
87
|
-
# that is unavailable through JFrog. Upgrade to match project/plugins.sbt.
|
|
88
|
-
META_PLUGINS="project/project/plugins.sbt"
|
|
89
|
-
if [[ -f "$META_PLUGINS" ]] && grep -q 'sbt-assembly.*"0\.' "$META_PLUGINS"; then
|
|
90
|
-
MAIN_VERSION=$(grep 'sbt-assembly' project/plugins.sbt | grep -oP '\d+\.\d+\.\d+' | head -1)
|
|
91
|
-
if [[ -n "$MAIN_VERSION" ]]; then
|
|
92
|
-
echo "Patching meta-build sbt-assembly from 0.x to ${MAIN_VERSION}"
|
|
93
|
-
sed -i "s/\"sbt-assembly\" % \"0\.[^\"]*\"/\"sbt-assembly\" % \"${MAIN_VERSION}\"/" "$META_PLUGINS"
|
|
94
|
-
grep sbt-assembly "$META_PLUGINS"
|
|
95
|
-
fi
|
|
96
|
-
fi
|
|
97
|
-
|
|
98
|
-
# ── Pre-seed SBT launcher JAR ──────────────────────────────────────
|
|
99
|
-
# The launcher is gitignored in both delta-io/delta and unitycatalog/unitycatalog.
|
|
100
|
-
# Without pre-seeding, build/sbt tries Maven Central which is blocked on
|
|
101
|
-
# hardened runners.
|
|
102
|
-
if [[ -f "project/build.properties" ]]; then
|
|
103
|
-
SBT_VERSION=$(grep sbt.version project/build.properties | cut -d= -f2 | tr -d ' ')
|
|
104
|
-
SBT_JAR="build/sbt-launch-${SBT_VERSION}.jar"
|
|
105
|
-
if [[ ! -f "$SBT_JAR" ]]; then
|
|
106
|
-
echo "Downloading SBT launcher ${SBT_VERSION} from JFrog..."
|
|
107
|
-
curl -fsSL -o "$SBT_JAR" \
|
|
108
|
-
-u "gha-service-account:${JFROG_ACCESS_TOKEN}" \
|
|
109
|
-
"${JFROG_MAVEN_URL}/org/scala-sbt/sbt-launch/${SBT_VERSION}/sbt-launch-${SBT_VERSION}.jar"
|
|
110
|
-
echo "SBT launcher downloaded ($(wc -c < "$SBT_JAR") bytes)"
|
|
111
|
-
else
|
|
112
|
-
echo "SBT launcher already present: $SBT_JAR"
|
|
113
|
-
fi
|
|
114
|
-
fi
|
|
115
|
-
|
|
116
|
-
echo "SBT and Coursier configured for JFrog"
|