Skip to content

[pull] master from datacharmer:master#7

Open
pull[bot] wants to merge 29 commits intoimpactbyte-learn:masterfrom
datacharmer:master
Open

[pull] master from datacharmer:master#7
pull[bot] wants to merge 29 commits intoimpactbyte-learn:masterfrom
datacharmer:master

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 8, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

Test the employees and sakila databases across modern MySQL versions
using dbdeployer sandboxes. Three separate workflows cover MySQL,
Percona Server, and MariaDB.

- CI MySQL: employees DB, partitioned schema, and sakila on 8.0/8.4/9.5
- CI Percona: employees DB on Percona Server 8.0/8.4
- CI MariaDB: employees DB + stored procedures on 10.11/11.4
- Weekly Monday cron + push/PR triggers
- MD5/SHA integrity checks as CI gates
- README updated with status badges
The dbdeployer install script extracts the binary to the current
directory but does not add it to $PATH. Explicitly move it to
/usr/local/bin after extraction.

Closes #51
- Expand MySQL CI matrix: 8.0.42, 8.4.8, 9.0.1, 9.2.0, 9.5.0, 9.6.0
- Handle glibc2.28 tarballs (MySQL 9.6+ uses glibc2.28 instead of 2.17)
- Fix Percona version check: don't fail if VERSION() lacks 'percona'
- Update cache key to v2 to invalidate old glibc2.17-only caches

Closes #51
1. --commands flag: only exists in MySQL 9.5+, not in 9.0/9.2.
   The broad `9.*` glob incorrectly applied it to all 9.x.
   Now uses numeric version comparison (major >= 9 && minor >= 5).

2. MD5() removed in MySQL 9.6: skip the MD5 integrity test for
   MySQL >= 9.6 and rely on SHA integrity check instead.

3. Added a "Detect MySQL features" step that computes feature
   flags (needs_commands, has_md5) for use in conditional steps.

Closes #51
Port the employees database to PostgreSQL with identical schema,
data, and integrity checks.

- postgresql/employees.sql: schema DDL adapted for PG
- postgresql/load_employees_db.sh: pipes dump files (strips
  MySQL backticks) into psql
- postgresql/objects.sql: stored functions/procedures in PL/pgSQL
- postgresql/test_employees_md5.sql: MD5 integrity test using
  PL/pgSQL incremental hash helper (replicates MySQL's @Crc pattern)
- postgresql/test_employees_sha.sql: SHA1 test using pgcrypto
- .github/workflows/ci-postgresql.yml: CI on PG 16 and 17
  using dbdeployer
- README: add PostgreSQL installation/testing section + badge

Closes #53
MySQL 9.6 removed both md5() and sha() functions. The SHA test was
running unconditionally, causing failures on 9.6. Now:
- Add has_sha feature detection alongside has_md5
- Make SHA test conditional on has_sha
- Add row count verification as fallback for 9.6+
- Bump cache key to v3 to fix corrupt cached tarballs
Each row tuple in INSERT INTO found_values was missing a closing
parenthesis, causing "syntax error at or near ;" on the last row.
The dbdeployer install script extracts the binary to the current
directory but does not add it to $PATH. Explicitly move it to
/usr/local/bin after extraction.

Closes #51
- Expand MySQL CI matrix: 8.0.42, 8.4.8, 9.0.1, 9.2.0, 9.5.0, 9.6.0
- Handle glibc2.28 tarballs (MySQL 9.6+ uses glibc2.28 instead of 2.17)
- Fix Percona version check: don't fail if VERSION() lacks 'percona'
- Update cache key to v2 to invalidate old glibc2.17-only caches

Closes #51
1. --commands flag: only exists in MySQL 9.5+, not in 9.0/9.2.
   The broad `9.*` glob incorrectly applied it to all 9.x.
   Now uses numeric version comparison (major >= 9 && minor >= 5).

2. MD5() removed in MySQL 9.6: skip the MD5 integrity test for
   MySQL >= 9.6 and rely on SHA integrity check instead.

3. Added a "Detect MySQL features" step that computes feature
   flags (needs_commands, has_md5) for use in conditional steps.

Closes #51
MySQL 9.6 removed both md5() and sha() functions. The SHA test was
running unconditionally, causing failures on 9.6. Now:
- Add has_sha feature detection alongside has_md5
- Make SHA test conditional on has_sha
- Add row count verification as fallback for 9.6+
- Bump cache key to v3 to fix corrupt cached tarballs
@pull pull Bot locked and limited conversation to collaborators Apr 8, 2026
@pull pull Bot added the ⤵️ pull label Apr 8, 2026
renecannao and others added 15 commits April 8, 2026 15:13
psql does not support MySQL-style -B (batch) or -N (skip column names)
flags. Use psql's -t (tuples only) instead.
PostgreSQL requires all non-aggregated columns in GROUP BY clause,
unlike MySQL which allows functional dependency. Add dept_name and
manager to GROUP BY.
PL/pgSQL procedures cannot return result sets directly with bare SELECT.
Convert to a function returning TABLE, which is the idiomatic PostgreSQL
approach. Update CI and README to use SELECT * FROM show_departments().
The RETURNS TABLE parameters create PL/pgSQL variables that conflict
with table column names. Qualify all column references with table
aliases (de.emp_no, de.dept_no, etc.).
SHA2() is available on all MySQL versions. This test uses SHA-256
instead of SHA-1, making it the primary integrity test for MySQL 9.6+
where md5() and sha() were removed. Expected values are placeholders
pending first CI run to compute them.
SHA-256 checksums captured from MySQL 8.0 CI run, verified consistent
across 9.0.1. Added PostgreSQL SHA-256 test using pgcrypto's
encode(digest(..., 'sha256'), 'hex'). Both use the same expected values
as MySQL, ensuring cross-database checksum compatibility.
SHA2() is available on all MySQL versions. This test uses SHA-256
instead of SHA-1, making it the primary integrity test for MySQL 9.6+
where md5() and sha() were removed. Replaces the row-count-only
fallback with proper checksum verification.
Document all tested MySQL/Percona/MariaDB versions, explain the
--commands flag requirement for MySQL 9.5+, and note that MD5/SHA
functions were removed in 9.6 requiring use of test_employees_sha2.sql.
…L details

- Add supported versions table covering MySQL, Percona, MariaDB, PostgreSQL
- Document MySQL 9.5 --commands flag and 9.6 md5/sha removal
- Explain SHA-256 as the recommended cross-database integrity test
- Expand PostgreSQL section: differences from MySQL, data integrity
  guarantees, SHA-256 compatibility between MySQL and PostgreSQL
Handle older MySQL tarballs (.tar.gz with glibc2.12) in addition to
newer ones (.tar.xz with glibc2.17/2.28). Rename "Supported Versions"
to "Tested Versions" since we don't guarantee support beyond what CI
covers.
Handle older MySQL tarballs (.tar.gz with glibc2.12) in addition to
newer ones (.tar.xz with glibc2.17/2.28). Rename "Supported Versions"
to "Tested Versions" since we don't guarantee support beyond what CI
covers.
Fix dbdeployer install: move binary to /usr/local/bin
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants