Compare commits

..

1 Commits

Author SHA1 Message Date
lancedb automation
e1d56b9c18 chore: update lance dependency to v2.0.0-beta.4 2025-12-22 10:20:40 +00:00
7 changed files with 96 additions and 369 deletions

View File

@@ -1,297 +0,0 @@
name: Codex Autofix CI
on:
check_suite:
types:
- completed
permissions:
contents: write
pull-requests: write
actions: read
concurrency:
group: codex-autofix-${{ github.event.check_suite.head_branch }}
cancel-in-progress: false
jobs:
autofix:
runs-on: ubuntu-latest
steps:
- name: Resolve PR and failing required checks
id: ctx
env:
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
REPO: ${{ github.repository }}
SHA: ${{ github.event.check_suite.head_sha }}
HEAD_BRANCH: ${{ github.event.check_suite.head_branch }}
MAX_ATTEMPTS: "3"
run: |
set -euo pipefail
echo "Repository: $REPO"
echo "head_branch: $HEAD_BRANCH"
echo "head_sha: $SHA"
if [[ "$HEAD_BRANCH" != codex/update-lance-* ]]; then
echo "Skip: branch '$HEAD_BRANCH' does not match codex/update-lance-*"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
prs_json="$(gh api -H "Accept: application/vnd.github+json" "repos/$REPO/commits/$SHA/pulls")"
pr_json="$(echo "$prs_json" | jq -c '[.[] | select(.state=="open")] | .[0]')"
if [[ -z "$pr_json" || "$pr_json" == "null" ]]; then
echo "Skip: no open PR found for sha $SHA"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
pr_number="$(echo "$pr_json" | jq -r '.number')"
head_ref="$(echo "$pr_json" | jq -r '.head.ref')"
head_repo="$(echo "$pr_json" | jq -r '.head.repo.full_name')"
pr_head_sha="$(echo "$pr_json" | jq -r '.head.sha')"
if [[ "$head_repo" != "$REPO" ]]; then
echo "Skip: cross-repo PR ($head_repo != $REPO)"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [[ "$pr_head_sha" != "$SHA" ]]; then
echo "Skip: stale check_suite event (pr head sha $pr_head_sha != event sha $SHA)"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
set +e
checks_json="$(gh pr checks "$pr_number" --required --repo "$REPO" --json name,state,bucket,link,workflow)"
checks_rc=$?
set -e
if [[ "$checks_rc" -eq 8 ]]; then
echo "Skip: required checks still pending"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
if [[ "$checks_rc" -ne 0 ]]; then
echo "Skip: failed to query required checks (exit=$checks_rc)"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
fail_count="$(echo "$checks_json" | jq '[.[] | select(.bucket=="fail")] | length')"
if [[ "$fail_count" -eq 0 ]]; then
echo "Skip: no failing required checks"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
comments_json="$(gh api "repos/$REPO/issues/$pr_number/comments" --paginate)"
stopped_count="$(echo "$comments_json" | jq '[.[].body | select(test("<!-- codex-autofix stopped -->"))] | length')"
if [[ "$stopped_count" -gt 0 ]]; then
echo "Skip: codex-autofix already stopped for this PR"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
prior_attempts="$(echo "$comments_json" | jq '[.[].body | select(test("<!-- codex-autofix attempt:"))] | length')"
attempt="$((prior_attempts + 1))"
if [[ "$attempt" -gt "$MAX_ATTEMPTS" ]]; then
run_url="${GITHUB_SERVER_URL}/${REPO}/actions/runs/${GITHUB_RUN_ID}"
comment_file="$(mktemp /tmp/codex-autofix-comment.XXXXXX.md)"
{
printf '%s\n' '<!-- codex-autofix stopped -->'
printf '<!-- codex-autofix attempt: %s -->\n' "$attempt"
printf 'Codex autofix stopped: reached max attempts (%s).\n\n' "$MAX_ATTEMPTS"
printf -- '- Run: %s\n' "$run_url"
printf -- '- head_sha: `%s`\n' "$SHA"
printf -- '- head_ref: `%s`\n' "$head_ref"
} >"$comment_file"
gh pr comment "$pr_number" --repo "$REPO" --body-file "$comment_file"
echo "needs_fix=false" >> "$GITHUB_OUTPUT"
exit 0
fi
evidence_file="$(mktemp /tmp/codex-autofix-evidence.XXXXXX.txt)"
run_url="${GITHUB_SERVER_URL}/${REPO}/actions/runs/${GITHUB_RUN_ID}"
{
echo "PR: #$pr_number"
echo "head_ref: $head_ref"
echo "head_sha: $SHA"
echo "Run: $run_url"
echo ""
echo "Failing required checks:"
echo "$checks_json" | jq -r '.[] | select(.bucket=="fail") | "- \(.name) (\(.workflow // "unknown")): \(.link // "n/a")"'
echo ""
} > "$evidence_file"
while IFS= read -r row; do
name="$(echo "$row" | jq -r '.name')"
link="$(echo "$row" | jq -r '.link // empty')"
workflow="$(echo "$row" | jq -r '.workflow // "unknown"')"
{
echo "================================================================================"
echo "CHECK: $name"
echo "WORKFLOW: $workflow"
echo "LINK: ${link:-n/a}"
} >> "$evidence_file"
run_id=""
if [[ -n "$link" ]]; then
run_id="$(echo "$link" | sed -n 's#.*actions/runs/\\([0-9][0-9]*\\).*#\\1#p' | head -n 1 || true)"
fi
if [[ -z "$run_id" ]]; then
echo "LOGS: unavailable (no run id found in link)" >> "$evidence_file"
echo "" >> "$evidence_file"
continue
fi
echo "LOGS: gh run view $run_id --log-failed (tail -c 20000)" >> "$evidence_file"
set +e
gh run view "$run_id" --repo "$REPO" --log-failed 2>/dev/null | tail -c 20000 >> "$evidence_file"
echo "" >> "$evidence_file"
set -e
done < <(echo "$checks_json" | jq -c '.[] | select(.bucket=="fail")')
comment_file="$(mktemp /tmp/codex-autofix-comment.XXXXXX.md)"
{
printf '<!-- codex-autofix attempt: %s -->\n' "$attempt"
printf 'Starting Codex autofix attempt %s.\n\n' "$attempt"
printf -- '- Run: %s\n' "$run_url"
printf -- '- head_sha: `%s`\n' "$SHA"
printf -- '- head_ref: `%s`\n' "$head_ref"
printf -- '- Failing required checks: %s\n' "$fail_count"
} >"$comment_file"
gh pr comment "$pr_number" --repo "$REPO" --body-file "$comment_file"
{
echo "needs_fix=true"
echo "pr_number=$pr_number"
echo "head_ref=$head_ref"
echo "attempt=$attempt"
echo "evidence_file=$evidence_file"
} >> "$GITHUB_OUTPUT"
- name: Checkout PR branch
if: steps.ctx.outputs.needs_fix == 'true'
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ steps.ctx.outputs.head_ref }}
token: ${{ secrets.ROBOT_TOKEN }}
persist-credentials: true
- name: Configure git
if: steps.ctx.outputs.needs_fix == 'true'
run: |
git config user.name "lancedb automation"
git config user.email "robot@lancedb.com"
- name: Set up Node.js
if: steps.ctx.outputs.needs_fix == 'true'
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Codex CLI
if: steps.ctx.outputs.needs_fix == 'true'
run: npm install -g @openai/codex
- name: Install Rust toolchain
if: steps.ctx.outputs.needs_fix == 'true'
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: clippy, rustfmt
- name: Install system dependencies
if: steps.ctx.outputs.needs_fix == 'true'
run: |
sudo apt-get update
sudo apt-get install -y protobuf-compiler libssl-dev
- name: Run Codex to fix failing CI
if: steps.ctx.outputs.needs_fix == 'true'
env:
PR_NUMBER: ${{ steps.ctx.outputs.pr_number }}
HEAD_REF: ${{ steps.ctx.outputs.head_ref }}
ATTEMPT: ${{ steps.ctx.outputs.attempt }}
EVIDENCE_FILE: ${{ steps.ctx.outputs.evidence_file }}
GITHUB_TOKEN: ${{ secrets.ROBOT_TOKEN }}
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
OPENAI_API_KEY: ${{ secrets.CODEX_TOKEN }}
run: |
set -euo pipefail
prompt_file="/tmp/codex-prompt.txt"
{
printf 'You are running inside the lancedb repository on a GitHub Actions runner.\n'
printf 'Your task is to fix failing required CI checks for pull request #%s on branch %s.\n\n' "$PR_NUMBER" "$HEAD_REF"
printf 'Goal:\n'
printf -- '- Make the smallest change necessary so that all required checks pass.\n\n'
printf 'Evidence (generated from GitHub checks and logs):\n'
printf '---\n'
cat "${EVIDENCE_FILE}"
printf '\n---\n\n'
printf 'Follow these steps exactly:\n'
printf '1. Identify the root cause from the evidence and repository state.\n'
printf '2. Make changes to fix the failures.\n'
printf '3. Run the relevant local commands that correspond to the failing checks until they succeed.\n'
printf ' If unsure, start with:\n'
printf ' - cargo fmt --all -- --check\n'
printf ' - cargo clippy --profile ci --workspace --tests --all-features -- -D warnings\n'
printf '4. Ensure the repository is clean except for intentional changes (git status --short, git diff).\n'
printf '5. Create a commit with message "fix: codex autofix (attempt %s)".\n' "$ATTEMPT"
printf '6. Push to origin branch "%s" (use --force-with-lease only if required).\n' "$HEAD_REF"
printf '7. Print the commands you ran and their results, plus git status --short and git log -1 --oneline.\n\n'
printf 'Constraints:\n'
printf -- '- Do not create a new pull request.\n'
printf -- '- Do not merge.\n'
printf -- '- Avoid modifying GitHub workflow files unless strictly required to fix CI for this PR.\n'
} >"$prompt_file"
printenv OPENAI_API_KEY | codex login --with-api-key
codex --config shell_environment_policy.ignore_default_excludes=true exec --dangerously-bypass-approvals-and-sandbox "$(cat "$prompt_file")"
- name: Ensure branch is pushed
if: steps.ctx.outputs.needs_fix == 'true'
env:
HEAD_REF: ${{ steps.ctx.outputs.head_ref }}
run: |
set -euo pipefail
if git diff --quiet && git diff --cached --quiet; then
echo "Working tree clean."
else
git add -A
git commit -m "fix: codex autofix (post-run)" || true
fi
git push origin "HEAD:${HEAD_REF}" --force-with-lease
- name: Comment result
if: steps.ctx.outputs.needs_fix == 'true'
env:
GH_TOKEN: ${{ secrets.ROBOT_TOKEN }}
REPO: ${{ github.repository }}
PR_NUMBER: ${{ steps.ctx.outputs.pr_number }}
ATTEMPT: ${{ steps.ctx.outputs.attempt }}
run: |
set -euo pipefail
run_url="${GITHUB_SERVER_URL}/${REPO}/actions/runs/${GITHUB_RUN_ID}"
sha="$(git rev-parse HEAD)"
summary="$(git log -1 --oneline || true)"
status="$(git status --short || true)"
comment_file="$(mktemp /tmp/codex-autofix-comment.XXXXXX.md)"
{
printf 'Codex autofix attempt %s finished.\n\n' "$ATTEMPT"
printf -- '- Run: %s\n' "$run_url"
printf -- '- head_sha: `%s`\n' "$sha"
printf -- '- Last commit: %s\n\n' "$summary"
printf '```\n%s\n```\n' "$status"
} >"$comment_file"
gh pr comment "$PR_NUMBER" --repo "$REPO" --body-file "$comment_file"

76
Cargo.lock generated
View File

@@ -3141,8 +3141,8 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
name = "fsst"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-array",
"rand 0.9.2",
@@ -4478,8 +4478,8 @@ dependencies = [
[[package]]
name = "lance"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-arith",
@@ -4544,13 +4544,14 @@ dependencies = [
[[package]]
name = "lance-arrow"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-array",
"arrow-buffer",
"arrow-cast",
"arrow-data",
"arrow-ord",
"arrow-schema",
"arrow-select",
"bytes",
@@ -4563,8 +4564,8 @@ dependencies = [
[[package]]
name = "lance-bitpacking"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrayref",
"paste",
@@ -4573,8 +4574,8 @@ dependencies = [
[[package]]
name = "lance-core"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -4587,6 +4588,7 @@ dependencies = [
"datafusion-sql",
"deepsize",
"futures",
"itertools 0.13.0",
"lance-arrow",
"libc",
"log",
@@ -4610,8 +4612,8 @@ dependencies = [
[[package]]
name = "lance-datafusion"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-array",
@@ -4641,8 +4643,8 @@ dependencies = [
[[package]]
name = "lance-datagen"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-array",
@@ -4653,14 +4655,15 @@ dependencies = [
"half",
"hex",
"rand 0.9.2",
"rand_distr 0.5.1",
"rand_xoshiro",
"random_word 0.5.2",
]
[[package]]
name = "lance-encoding"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -4697,8 +4700,8 @@ dependencies = [
[[package]]
name = "lance-file"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -4730,8 +4733,8 @@ dependencies = [
[[package]]
name = "lance-geo"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"datafusion",
"geo-types",
@@ -4742,8 +4745,8 @@ dependencies = [
[[package]]
name = "lance-index"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-arith",
@@ -4789,6 +4792,7 @@ dependencies = [
"prost-types",
"rand 0.9.2",
"rand_distr 0.5.1",
"rangemap",
"rayon",
"roaring",
"serde",
@@ -4804,8 +4808,8 @@ dependencies = [
[[package]]
name = "lance-io"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-arith",
@@ -4845,8 +4849,8 @@ dependencies = [
[[package]]
name = "lance-linalg"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -4862,8 +4866,8 @@ dependencies = [
[[package]]
name = "lance-namespace"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"async-trait",
@@ -4875,8 +4879,8 @@ dependencies = [
[[package]]
name = "lance-namespace-impls"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-ipc",
@@ -4905,9 +4909,9 @@ dependencies = [
[[package]]
name = "lance-namespace-reqwest-client"
version = "0.0.18"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ea349999bcda4eea53fc05d334b3775ec314761e6a706555c777d7a29b18d19"
checksum = "00a21b43fe2a373896727b97927adedd2683d2907683f294f62cf8815fbf6a01"
dependencies = [
"reqwest",
"serde",
@@ -4918,8 +4922,8 @@ dependencies = [
[[package]]
name = "lance-table"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow",
"arrow-array",
@@ -4958,8 +4962,8 @@ dependencies = [
[[package]]
name = "lance-testing"
version = "1.0.1-beta.1"
source = "git+https://github.com/lance-format/lance.git?tag=v1.0.1-beta.1#9e65b2a9ca17b1c81a33183e5660f88d1b3b9ce0"
version = "2.0.0-beta.4"
source = "git+https://github.com/lance-format/lance.git?tag=v2.0.0-beta.4#4c71be26ad92c6f0beea27022e1a489c6fc1f8bc"
dependencies = [
"arrow-array",
"arrow-schema",

View File

@@ -15,20 +15,20 @@ categories = ["database-implementations"]
rust-version = "1.78.0"
[workspace.dependencies]
lance = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-core = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-datagen = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-file = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-io = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-index = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-linalg = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-namespace = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-namespace-impls = { "version" = "=1.0.1-beta.1", default-features = false, "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-table = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-testing = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-datafusion = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-encoding = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance-arrow = { "version" = "=1.0.1-beta.1", "tag" = "v1.0.1-beta.1", "git" = "https://github.com/lance-format/lance.git" }
lance = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-core = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-datagen = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-file = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-io = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-index = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-linalg = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-namespace = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-namespace-impls = { "version" = "=2.0.0-beta.4", default-features = false, "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-table = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-testing = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-datafusion = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-encoding = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
lance-arrow = { "version" = "=2.0.0-beta.4", "tag" = "v2.0.0-beta.4", "git" = "https://github.com/lance-format/lance.git" }
ahash = "0.8"
# Note that this one does not include pyarrow
arrow = { version = "56.2", optional = false }

View File

@@ -325,12 +325,12 @@ impl Connection {
let inner = self_.get_inner()?.clone();
let py = self_.py();
future_into_py(py, async move {
use lance_namespace::models::{create_namespace_request, CreateNamespaceRequest};
let mode_enum = mode.and_then(|m| match m.to_lowercase().as_str() {
"create" => Some(create_namespace_request::Mode::Create),
"exist_ok" => Some(create_namespace_request::Mode::ExistOk),
"overwrite" => Some(create_namespace_request::Mode::Overwrite),
_ => None,
use lance_namespace::models::CreateNamespaceRequest;
let mode_enum = mode.map(|m| match m.to_lowercase().as_str() {
"create" => "Create".to_string(),
"exist_ok" => "ExistOk".to_string(),
"overwrite" => "Overwrite".to_string(),
_ => m,
});
let request = CreateNamespaceRequest {
id: if namespace.is_empty() {
@@ -360,16 +360,16 @@ impl Connection {
let inner = self_.get_inner()?.clone();
let py = self_.py();
future_into_py(py, async move {
use lance_namespace::models::{drop_namespace_request, DropNamespaceRequest};
let mode_enum = mode.and_then(|m| match m.to_uppercase().as_str() {
"SKIP" => Some(drop_namespace_request::Mode::Skip),
"FAIL" => Some(drop_namespace_request::Mode::Fail),
_ => None,
use lance_namespace::models::DropNamespaceRequest;
let mode_enum = mode.map(|m| match m.to_uppercase().as_str() {
"SKIP" => "Skip".to_string(),
"FAIL" => "Fail".to_string(),
_ => m,
});
let behavior_enum = behavior.and_then(|b| match b.to_uppercase().as_str() {
"RESTRICT" => Some(drop_namespace_request::Behavior::Restrict),
"CASCADE" => Some(drop_namespace_request::Behavior::Cascade),
_ => None,
let behavior_enum = behavior.map(|b| match b.to_uppercase().as_str() {
"RESTRICT" => "Restrict".to_string(),
"CASCADE" => "Cascade".to_string(),
_ => b,
});
let request = DropNamespaceRequest {
id: if namespace.is_empty() {

View File

@@ -154,6 +154,7 @@ impl Database for LanceNamespaceDatabase {
let describe_request = DescribeTableRequest {
id: Some(table_id.clone()),
version: None,
with_table_uri: None,
};
let describe_result = self.namespace.describe_table(describe_request).await;

View File

@@ -42,8 +42,8 @@ use lance_index::DatasetIndexExt;
use lance_index::IndexType;
use lance_io::object_store::LanceNamespaceStorageOptionsProvider;
use lance_namespace::models::{
QueryTableRequest as NsQueryTableRequest, QueryTableRequestFullTextQuery,
QueryTableRequestVector, StringFtsQuery,
QueryTableRequest as NsQueryTableRequest, QueryTableRequestColumns,
QueryTableRequestFullTextQuery, QueryTableRequestVector, StringFtsQuery,
};
use lance_namespace::LanceNamespace;
use lance_table::format::Manifest;
@@ -2348,7 +2348,10 @@ impl NativeTable {
// Convert select to columns list
let columns = match &vq.base.select {
Select::All => None,
Select::Columns(cols) => Some(cols.clone()),
Select::Columns(cols) => Some(Box::new(QueryTableRequestColumns {
column_names: Some(cols.clone()),
column_aliases: None,
})),
Select::Dynamic(_) => {
return Err(Error::NotSupported {
message:
@@ -2421,7 +2424,10 @@ impl NativeTable {
let columns = match &q.select {
Select::All => None,
Select::Columns(cols) => Some(cols.clone()),
Select::Columns(cols) => Some(Box::new(QueryTableRequestColumns {
column_names: Some(cols.clone()),
column_aliases: None,
})),
Select::Dynamic(_) => {
return Err(Error::NotSupported {
message: "Dynamic columns are not supported for server-side query"
@@ -5146,7 +5152,13 @@ mod tests {
assert_eq!(ns_request.k, 10);
assert_eq!(ns_request.offset, Some(5));
assert_eq!(ns_request.filter, Some("id > 0".to_string()));
assert_eq!(ns_request.columns, Some(vec!["id".to_string()]));
assert_eq!(
ns_request
.columns
.as_ref()
.and_then(|c| c.column_names.clone()),
Some(vec!["id".to_string()])
);
assert_eq!(ns_request.vector_column, Some("vector".to_string()));
assert_eq!(ns_request.distance_type, Some("l2".to_string()));
assert!(ns_request.vector.single_vector.is_some());
@@ -5187,7 +5199,13 @@ mod tests {
assert_eq!(ns_request.k, 20);
assert_eq!(ns_request.offset, Some(5));
assert_eq!(ns_request.filter, Some("id > 5".to_string()));
assert_eq!(ns_request.columns, Some(vec!["id".to_string()]));
assert_eq!(
ns_request
.columns
.as_ref()
.and_then(|c| c.column_names.clone()),
Some(vec!["id".to_string()])
);
assert_eq!(ns_request.with_row_id, Some(true));
assert_eq!(ns_request.bypass_vector_index, Some(true));
assert!(ns_request.vector_column.is_none()); // No vector column for plain queries

View File

@@ -100,7 +100,8 @@ impl DatasetRef {
let should_checkout = match &target_ref {
refs::Ref::Version(_, Some(target_ver)) => version != target_ver,
refs::Ref::Version(_, None) => true, // No specific version, always checkout
refs::Ref::Tag(_) => true, // Always checkout for tags
refs::Ref::VersionNumber(target_ver) => version != target_ver,
refs::Ref::Tag(_) => true, // Always checkout for tags
};
if should_checkout {