Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f9f0804
Prepare v1.26.3 RC1 release documentation and tracking artifacts.
askdba Mar 19, 2026
61b1ad2
Fix RC1 lint failures in changelog and RC plan text.
askdba Mar 19, 2026
5f18540
Address bot review feedback for RC1 docs.
askdba Mar 19, 2026
771510d
Fix LAST_TAG runbook command to exclude RC tags.
askdba Mar 19, 2026
3981337
Add post-RC Docker smoke plan and multi-image smoke script.
askdba Mar 19, 2026
7599c37
fix: satisfy textlint terminology (repository vs repo)
askdba Mar 19, 2026
561c267
fix(win): harden Windows config load (TOCTOU, GetLastError, DACL check)
askdba Mar 19, 2026
695cb7f
chore: drop Windows-specific plugin code paths
askdba Mar 19, 2026
a0ddc24
docs: note Windows unsupported at this time (changelog + release notes)
askdba Mar 19, 2026
c31ad73
docs(readme): add supported platforms; Windows unsupported at this time
askdba Mar 19, 2026
bc638d1
docs: mention README platform note in changelog and release notes draft
askdba Mar 19, 2026
2570a05
chore: add agent planning workflow (tasks/, Cursor rule)
askdba Mar 20, 2026
3b5db68
docs: sequence post-CI checks then GHCR pull + smoke tests
askdba Mar 20, 2026
34310d2
ci: native arm64 plugin build; fix PLUGIN_EXPORT and POSIX portabilit…
askdba Mar 20, 2026
5de85fc
ci: fix actionlint on release workflow; disable textlint until ruleset
askdba Mar 20, 2026
40c015f
ci: add zizmor config for super-linter GITHUB_ACTIONS
askdba Mar 20, 2026
18b406e
ci: place zizmor config under default LINTER_RULES_PATH
askdba Mar 20, 2026
65d5593
ci(linter): disable zizmor in super-linter; document loop lesson
askdba Mar 20, 2026
d128226
ci(linter): replace super-linter with actionlint-only job
askdba Mar 20, 2026
61b6d61
ci(linter): allow manual workflow_dispatch for lint-only runs
askdba Mar 20, 2026
5a5ce7f
ci(linter): install actionlint via official script; fix -shellcheck CLI
askdba Mar 20, 2026
5b152b3
docs(release): RC1 sign-off — status and checklist (v1.26.3)
askdba Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .cursor/rules/agent-workflow.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
description: Default planning, verification, and task workflow for MyVector (read tasks/PLANNING.md)
alwaysApply: true
---

# MyVector agent workflow

Follow `tasks/PLANNING.md` in this repository.

**Always:**

- Use plan mode for non-trivial work (3+ steps or architecture); stop and re-plan if derailed.
- Verify before marking done: tests, logs, or equivalent proof; ask if a staff engineer would ship it.
- Prefer simplicity and root-cause fixes over hacks.
- On user correction: append the pattern to `tasks/lessons.md`.

**Tasks:**

- Use `tasks/todo.md` for checkable plans and a short review when done.

**Optional:**

- Delegate exploration/research to subagents when it keeps context clean.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor IDE config committed in release candidate

Low Severity

The .cursor/rules/agent-workflow.mdc file is Cursor IDE-specific agent configuration being committed as part of a release candidate. The .dockerignore already lists .cursor, indicating awareness this directory is tool-specific and shouldn't be distributed. This IDE configuration with alwaysApply: true doesn't belong in a versioned release artifact — it's personal/team tooling that could affect other Cursor users who clone the repo.

Fix in Cursor Fix in Web

8 changes: 7 additions & 1 deletion .github/.linter.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
---
# Legacy reference for optional local super-linter runs. CI uses actionlint only
# (see .github/workflows/linter.yml), not this file.
# .github/.linter.yaml
# Configuration for super-linter

Expand All @@ -7,7 +9,8 @@
DEFAULT_BRANCH: main
VALIDATE_ALL_CODEBASE: true
DISABLE_ERRORS: false
LINTER_RULES_PATH: .github
# Must match super-linter default (and linter.yml) so zizmor.yaml is found.
LINTER_RULES_PATH: .github/linters

# C++ configuration
VALIDATE_CPP: false
Expand All @@ -17,5 +20,8 @@ CPP_FILE_EXTENSIONS: ".cc,.cpp,.h"
# Perl configuration
VALIDATE_PERL: false

# textlint: enable after adding .github/.textlintrc.json with project rules
VALIDATE_NATURAL_LANGUAGE: false

# Ignore the include directory for JSCPD
JSCPD_CONFIG_FILE: .jscpd.json
27 changes: 27 additions & 0 deletions .github/linters/zizmor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# zizmor — optional local/supply-chain checks (CI runs actionlint only; see linter.yml)
# Super-linter loads config from LINTER_RULES_PATH (default: .github/linters).
# Example: docker run --rm -v "$PWD":/repo ghcr.io/woodruffw/zizmor:latest \
# --config /repo/.github/linters/zizmor.yaml /repo/.github/workflows/
# - Allow tag/branch pins for actions (not only SHA).
# - Suppress broad-permissions / checkout credential warnings for these workflows
# (GHCR publish, read-all, super-linter checkout needs full history).
# https://docs.zizmor.sh/configuration/
rules:
unpinned-uses:
config:
policies:
"*": ref-pin
excessive-permissions:
ignore:
- benchmark-issue79.yml
- ci.yml
- docker-publish.yml
- linter.yml
- release.yml
artipacked:
ignore:
- benchmark-issue79.yml
- ci.yml
- docker-publish.yml
- linter.yml
- release.yml
190 changes: 109 additions & 81 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,113 +12,141 @@ permissions:
contents: read
packages: write

# Build each plugin arch on a native runner. Building inside `docker run --platform
# linux/arm64` on x86 uses QEMU; apt/dpkg in that path can segfault (exit 100).
jobs:
build-and-publish:
runs-on: ubuntu-22.04
build-plugin:
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- mysql-tag: 'mysql-8.0.45'
mysql-version: '8.0'
dockerfile: Dockerfile.oraclelinux8
compiler: 10
arch: amd64
runner: ubuntu-22.04
- mysql-tag: 'mysql-8.0.45'
mysql-version: '8.0'
compiler: 10
arch: arm64
runner: ubuntu-24.04-arm
- mysql-tag: 'mysql-8.4.8'
mysql-version: '8.4'
compiler: 10
arch: amd64
runner: ubuntu-22.04
- mysql-tag: 'mysql-8.4.8'
mysql-version: '8.4'
dockerfile: Dockerfile.oraclelinux9
compiler: 10
arch: arm64
runner: ubuntu-24.04-arm
- mysql-tag: 'mysql-9.6.0'
mysql-version: '9.6'
dockerfile: Dockerfile.oraclelinux9
compiler: 11
arch: amd64
runner: ubuntu-22.04
- mysql-tag: 'mysql-9.6.0'
mysql-version: '9.6'
compiler: 11
arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: Checkout MyVector Code
uses: actions/checkout@v4

- name: Install Build Dependencies
- name: Build MyVector plugin (${{ matrix.arch }})
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
gcc-10 \
g++-10 \
gcc-11 \
g++-11 \
libssl-dev \
libncurses5-dev \
pkg-config \
bison \
libtirpc-dev \
libldap2-dev \
libsasl2-dev \
libudev-dev \
libre2-dev \
libcurl4-openssl-dev \
libprotobuf-dev \
protobuf-compiler
set -euo pipefail
arch="${{ matrix.arch }}"
build_dir="mysql-server-${arch}"
docker run --rm --platform "linux/${arch}" \
-v "$PWD":/work -w /work ubuntu:22.04 bash -lc "
set -euo pipefail
apt-get update
apt-get install -y \
build-essential \
cmake \
gcc-${{ matrix.compiler }} \
g++-${{ matrix.compiler }} \
git \
libssl-dev \
libncurses5-dev \
pkg-config \
bison \
libtirpc-dev \
libldap2-dev \
libsasl2-dev \
libudev-dev \
libre2-dev \
libcurl4-openssl-dev \
libprotobuf-dev \
protobuf-compiler
rm -rf ${build_dir}
git clone --depth 1 --branch ${{ matrix.mysql-tag }} \
https://github.com/mysql/mysql-server.git ${build_dir}
mkdir -p ${build_dir}/plugin/myvector
cp src/*.cc ${build_dir}/plugin/myvector/
cp include/*.h ${build_dir}/plugin/myvector/
cp include/*.i ${build_dir}/plugin/myvector/ 2>/dev/null || true
cp CMakeLists.txt ${build_dir}/plugin/myvector/
cd ${build_dir}
mkdir -p bld && cd bld
cmake .. \
-DCMAKE_C_COMPILER=gcc-${{ matrix.compiler }} \
-DCMAKE_CXX_COMPILER=g++-${{ matrix.compiler }} \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../../boost_cache \
-DWITH_UNIT_TESTS=OFF \
-DWITH_ROUTER=OFF \
-DWITH_RAPID=OFF \
-DWITH_NDB=OFF \
-DWITH_NDBCLUSTER=OFF \
-DWITH_EXAMPLE_STORAGE_ENGINE=OFF \
-DCMAKE_BUILD_TYPE=Release
make myvector -j\$(nproc)
cp plugin_output_directory/myvector.so /work/myvector-${arch}.so
"

- name: Upload plugin artifact
uses: actions/upload-artifact@v4
with:
name: plugin-${{ matrix.mysql-version }}-${{ matrix.arch }}
path: myvector-${{ matrix.arch }}.so

build-and-publish:
needs: build-plugin
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cross-version CI coupling blocks unrelated Docker publishes

Low Severity

The build-and-publish job uses needs: build-plugin which creates a monolithic dependency on all six build-plugin matrix entries. If any single entry fails (e.g., arm64 build for MySQL 8.0), all three build-and-publish jobs are skipped — including MySQL 8.4 and 9.6 whose builds may have succeeded for both architectures. The previous workflow had each MySQL version fully independent, so a failure in one version never blocked others from building, smoke-testing, or publishing.

Fix in Cursor Fix in Web

runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- mysql-version: '8.0'
dockerfile: Dockerfile.oraclelinux8
- mysql-version: '8.4'
dockerfile: Dockerfile.oraclelinux9
- mysql-version: '9.6'
dockerfile: Dockerfile.oraclelinux9
steps:
- name: Checkout MyVector Code
uses: actions/checkout@v4

- name: Download plugin artifacts (amd64 + arm64)
uses: actions/download-artifact@v4
with:
pattern: plugin-${{ matrix.mysql-version }}-*
path: .
merge-multiple: true

- name: Prepare Docker build context
run: cp sql/myvectorplugin.sql .

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build MyVector plugin (amd64/arm64)
run: |
set -euo pipefail
for arch in amd64 arm64; do
build_dir="mysql-server-${arch}"
docker run --rm --platform "linux/${arch}" \
-v "$PWD":/work -w /work ubuntu:22.04 bash -lc "
set -euo pipefail
apt-get update
apt-get install -y \
build-essential \
cmake \
gcc-${{ matrix.compiler }} \
g++-${{ matrix.compiler }} \
git \
libssl-dev \
libncurses5-dev \
pkg-config \
bison \
libtirpc-dev \
libldap2-dev \
libsasl2-dev \
libudev-dev \
libre2-dev \
libcurl4-openssl-dev \
libprotobuf-dev \
protobuf-compiler
rm -rf ${build_dir}
git clone --depth 1 --branch ${{ matrix.mysql-tag }} \
https://github.com/mysql/mysql-server.git ${build_dir}
mkdir -p ${build_dir}/plugin/myvector
cp src/*.cc ${build_dir}/plugin/myvector/
cp include/*.h ${build_dir}/plugin/myvector/
cp include/*.i ${build_dir}/plugin/myvector/ 2>/dev/null || true
cp CMakeLists.txt ${build_dir}/plugin/myvector/
cd ${build_dir}
mkdir -p bld && cd bld
cmake .. \
-DCMAKE_C_COMPILER=gcc-${{ matrix.compiler }} \
-DCMAKE_CXX_COMPILER=g++-${{ matrix.compiler }} \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=../../boost_cache \
-DWITH_UNIT_TESTS=OFF \
-DWITH_ROUTER=OFF \
-DWITH_RAPID=OFF \
-DWITH_NDB=OFF \
-DWITH_NDBCLUSTER=OFF \
-DWITH_EXAMPLE_STORAGE_ENGINE=OFF \
-DCMAKE_BUILD_TYPE=Release
make myvector -j\$(nproc)
cp plugin_output_directory/myvector.so /work/myvector-${arch}.so
"
done
cp sql/myvectorplugin.sql .

- name: Smoke test image contents
run: |
for arch in amd64 arm64; do
Expand Down
33 changes: 18 additions & 15 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
# Deterministic PR lint: actionlint only (no Super-Linter bundle).
# Uses the official download script — no Docker (avoids Hub rate limits / daemon issues).
# Optional: zizmor --config .github/linters/zizmor.yaml .github/workflows/
name: Lint Code Base

on:
pull_request:
branches: [ "main" ]
workflow_dispatch:

permissions:
contents: read
packages: read
statuses: write

jobs:
lint:
name: Lint Code Base
runs-on: ubuntu-latest
env:
# Quieter checkout on Node 24+ runners (see GitHub Node 20 deprecation changelog).
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0

- name: Lint Code Base
uses: github/super-linter@v6
env:
DEFAULT_BRANCH: "main"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VALIDATE_CPP: "false"
VALIDATE_CLANG_FORMAT: "false"
VALIDATE_PERL: "false"
VALIDATE_JSCPD: "false"
VALIDATE_SQLFLUFF: "false"
# Ref: https://github.com/rhysd/actionlint/blob/main/docs/usage.md#use-actionlint-on-github-actions
- name: Install actionlint
shell: bash
run: bash <(curl -fsSL https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)

- name: Lint GitHub Actions workflows (actionlint)
shell: bash
run: |
set -euo pipefail
# -shellcheck requires a path in v1.7+; omit to use default shellcheck on PATH (Ubuntu runners).
./actionlint -color
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
done

- name: Create Release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/**/*.tar.gz
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@ myvector.cnf

# Issue close comment helpers (used once, then discarded)
docs/ISSUE_*_CLOSE_COMMENT.md

# actionlint binary (official download script may drop this in repo root)
/actionlint
Loading
Loading