Skip to content

rebase 2#41

Merged
jmrenouard merged 11 commits intojmrenouard:masterfrom
major:master
Apr 13, 2026
Merged

rebase 2#41
jmrenouard merged 11 commits intojmrenouard:masterfrom
major:master

Conversation

@jmrenouard
Copy link
Copy Markdown
Owner

@jmrenouard jmrenouard commented Apr 13, 2026

Summary by Sourcery

Improve MySQLTuner compatibility with environments lacking in-place regex substitutions and update GitHub Actions workflows to use newer action versions.

Enhancements:

  • Adjust MyISAM table name escaping and PATH normalization to avoid reliance on regex substitution return values, improving portability across Perl versions.

CI:

  • Bump Docker Buildx, Docker login, and Docker build-push GitHub Actions to their latest major versions in the Docker publish workflow.
  • Update the GitHub Release publishing workflow to use the latest major version of the release action.

@sourcery-ai
Copy link
Copy Markdown

sourcery-ai Bot commented Apr 13, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Refactors two Perl regex substitutions to avoid using the /r (non-destructive) modifier and updates GitHub Actions workflow dependencies to newer major versions for Docker and release publishing.

Flow diagram for updated which subroutine path handling

flowchart TD
    A[Call which with prog_name and path_string] --> B[Read ENV PATH into path_env]
    B --> C{is_win?}
    C -- no --> D[Split ENV PATH on : into path_array]
    C -- yes --> E[Replace backslashes with forward slashes in path_env]
    E --> F[Split path_env on ; into path_array]
    D --> G[Iterate over each path in path_array]
    F --> G
    G --> H{is_win?}
    H -- yes --> I[Append .exe to prog_name when checking in path]
    H -- no --> J[Check prog_name directly in path]
    I --> K{Program found?}
    J --> K
    K -- yes --> L[Return full path to program]
    K -- no --> M[Continue loop or return undef if none found]
Loading

File-Level Changes

Change Details Files
Refactor Perl regex substitutions to avoid the /r modifier and make the transformations explicit.
  • Change MyISAM table name escaping to first copy the variable, then apply a global substitution of '
' with '`'.
  • Change Windows PATH normalization to first copy PATH into a local variable, then apply a global backslash-to-slash substitution before splitting it.
  • Update GitHub Actions workflows to newer major versions of Docker-related actions and the GitHub release action.
    • Bump docker/setup-buildx-action from v3 to v4 in docker_publish workflow.
    • Bump docker/login-action from v3 to v4 in docker_publish workflow.
    • Bump docker/build-push-action from v6 to v7 in docker_publish workflow.
    • Bump softprops/action-gh-release from v2 to v3 in publish_release workflow.
    .github/workflows/docker_publish.yml
    .github/workflows/publish_release.yml

    Tips and commands

    Interacting with Sourcery

    • Trigger a new review: Comment @sourcery-ai review on the pull request.
    • Continue discussions: Reply directly to Sourcery's review comments.
    • Generate a GitHub issue from a review comment: Ask Sourcery to create an
      issue from a review comment by replying to it. You can also reply to a
      review comment with @sourcery-ai issue to create an issue from it.
    • Generate a pull request title: Write @sourcery-ai anywhere in the pull
      request title to generate a title at any time. You can also comment
      @sourcery-ai title on the pull request to (re-)generate the title at any time.
    • Generate a pull request summary: Write @sourcery-ai summary anywhere in
      the pull request body to generate a PR summary at any time exactly where you
      want it. You can also comment @sourcery-ai summary on the pull request to
      (re-)generate the summary at any time.
    • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
      request to (re-)generate the reviewer's guide at any time.
    • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
      pull request to resolve all Sourcery comments. Useful if you've already
      addressed all the comments and don't want to see them anymore.
    • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
      request to dismiss all existing Sourcery reviews. Especially useful if you
      want to start fresh with a new review - don't forget to comment
      @sourcery-ai review to trigger a new review!

    Customizing Your Experience

    Access your dashboard to:

    • Enable or disable review features such as the Sourcery-generated pull request
      summary, the reviewer's guide, and others.
    • Change the review language.
    • Add, remove or edit custom review instructions.
    • Adjust other review settings.

    Getting Help

    @jmrenouard jmrenouard merged commit 089a598 into jmrenouard:master Apr 13, 2026
    6 checks passed
    Copy link
    Copy Markdown

    @sourcery-ai sourcery-ai Bot left a comment

    Choose a reason for hiding this comment

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

    Hey - I've reviewed your changes and they look great!


    Sourcery is free for open source - if you like our reviews please consider sharing them ✨
    Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

    jmrenouard added a commit that referenced this pull request Apr 17, 2026
    # Release Notes - v2.8.41
    
    **Date**: 2026-04-13
    
    ## 📝 Executive Summary
    
    ```text
    2.8.41 2026-04-13
    
    - chore: automated project maintenance and cleanup (extracted `RULES.md`, `MEMORY_DB.md`, `TESTS.md`).
    - feat: implement idiomatic Perl Boolean practices across the project (#34).
    - feat: add recommendation for `table_open_cache_instances` based on CPU cores (major#480).
    - feat: improve syslog and systemd journal detection for error logs (major#440).
    - feat: initialize `$mysqllogin` to avoid uninitialized value warnings (major#490).
    - fix: Restore compatibility with older Perl versions (by @jasongill).
    - fix: wrap template loading in `get_template_model()` to avoid `uninitialized value` warnings during `require`.
    - fix: allow `--updateversion` to work on hosts without `mysql`/`mariadb` installed (#36).
    - fix: skip local SSL certificate warnings if they are in an inaccessible `datadir` (#33).
    - fix: correct false positives in `check_removed_innodb_variables` by distinguishing real server variables from internal ones (#32).
    - fix: improve join_buffer_size recommendation formatting in Variables to Adjust (major#881).
    - fix: suppress MySQL client warning regarding 'DISABLED' boolean value for SSL (major#887).
    - fix: correctly handle `--defaults-file` and `--defaults-extra-file` without dropping options (major#605).
    - fix: restore Debian maintenance account automatic login by using idiomatic boolean checks (major#896).
    - fix: include `tmp_table_size` in per-thread memory calculation for better accuracy (major#864).
    - fix: add retry mechanism for initial `SELECT VERSION()` query to improve connection resilience (major#782).
    - fix: prevent `AUTO_INCREMENT` capacity false positives for empty tables (#37).
    - fix: refactor InnoDB Redo Log Capacity logic to be workload-based and avoid false positives (major#714, major#737, major#777).
    - fix: add guards against division by zero in calculations for improved stability (major#435).
    - fix: add truthiness guards to `mysql_innodb` and `mysql_stats` subroutines.
    - fix: improve `which` logic for better container/minimal environment support.
    - fix: enhance login failure reporting with detailed output.
    - ci: enhance Quality Gate to strictly enforce zero-warning policy on GitHub Actions tests.
    - ci: implement dynamic CI test environment detection by wrapping configuration extraction.
    - ci: refactor GitHub Actions release and prerelease workflows to support dynamic versions and checksum generation.
    - ci: migrate maintenance script to GitHub Actions.
    - refactor: update CLI metadata to use `undef` as default for string/path options.
    - refactor: replace non-idiomatic `eq '0'`, `ne 0`, etc., with standard truthiness checks.
    - refactor: replace "master"/"slave" terminology with "source"/"replica" for cultural sensitivity (major#888).
    - chore(deps): update docker/setup-buildx-action action to v4.
    - chore(deps): update docker/build-push-action action to v7.
    - chore(deps): update docker/login-action action to v4.
    - chore(deps): update softprops/action-gh-release action to v3.
    ```
    
    ## 📈 Diagnostic Growth Indicators
    
    | Metric | Current | Progress | Status |
    | :--- | :--- | :--- | :--- |
    | Total Indicators | 12 | 0 | 🛡️ |
    | Efficiency Checks | 0 | 0 | 🛡️ |
    | Risk Detections | 2 | 0 | 🛡️ |
    | Information Points | 10 | 0 | 🛡️ |
    
    ## 🛠️ Internal Commit History
    
    - feat: release 2.8.41 (2a8371c)
    - style: tidy mysqltuner.pl (db23439)
    - ci: refactor Github release definitions with pre-releases and deliverables support (68f8d12)
    - ci: enforce zero-warning policy and dynamic test env (2eebcc4)
    - feat: release 2.8.41 final stabilization (e479ba7)
    - feat: release 2.8.41 final polish (e8d2751)
    - feat: release 2.8.41 final polish (bac36cb)
    - feat: release 2.8.41 (56b9dd7)
    - Merge pull request #41 from major/master (089a598)
    - Merge pull request major#885 from major/renovate/docker-setup-buildx-action-4.x (d430513)
    - Merge pull request major#886 from major/renovate/docker-build-push-action-7.x (9b7dd14)
    - Merge pull request major#884 from major/renovate/docker-login-action-4.x (5d56ecb)
    - Merge pull request major#894 from major/renovate/softprops-action-gh-release-3.x (9805873)
    - Merge pull request major#882 from jasongill/master (d1f3808)
    - Merge pull request major#895 from jmrenouard/master (2feb466)
    - Merge pull request #40 from major/master (10fcd37)
    - Merge branch 'master' into master (c13bb0b)
    - feat: release 2.8.40 (21d5873)
    - perltidy mysqltuner.pl (5653056)
    - chore(deps): update all non-major dependencies to v20.5.0 (major#893) (290b646)
    - chore(deps): update dependency lodash to v4.18.1 [security] (major#892) (c01e968)
    - chore: add automerge to Renovate config (633edcc)
    - Add CodeQL analysis workflow configuration (43a57c9)
    - Merge pull request #35 from C0RD/master (9474c70)
    - chore(deps): update all non-major dependencies to v20.5.0 (major#893) (4520d11)
    - chore(deps): update softprops/action-gh-release action to v3 (75e9cee)
    - chore(deps): update dependency lodash to v4.18.1 [security] (major#892) (e77d43c)
    - chore: add automerge to Renovate config (0470fb7)
    - Merge pull request #38 from jmrenouard/dependabot/npm_and_yarn/npm_and_yarn-b22b4dc46b (69caecf)
    - Merge pull request #39 from major/master (54dbffd)
    - chore(deps-dev): bump the npm_and_yarn group across 1 directory with 2 updates (955284a)
    - chore(deps): update docker/build-push-action action to v7 (a5a6234)
    - chore(deps): update docker/setup-buildx-action action to v4 (830bbc2)
    - chore(deps): update docker/login-action action to v4 (2ca8b8d)
    - Change default update check to disabled (938db61)
    - Remove r modifier from regex for compatability with older Perl versions (d6f7f97)
    - chore: bump version to 2.8.41 (3e54167)
    - Merge pull request major#879 from jmrenouard/master (9b8617f)
    
    ## ⚙️ Technical Evolutions
    
    *Internal logic hardening (no interface or diagnostic changes).*
    
    ## ✅ Laboratory Verification Results
    
    - [x] Automated TDD suite passed.
    - [x] Multi-DB version laboratory execution validated.
    - [x] Performance indicator delta analysis completed.
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    None yet

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    2 participants