Skip to content

Add support for MySQL 8.0.42, 8.4.5, and 9.3.0 #207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Apr 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 5 additions & 5 deletions docs/SUPPORTED_MYSQL_DOWNLOADS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

*Architectures used can be overridden by the ```arch``` option provided your OS and system supports running applications that use those architectures.*

Linux, Windows, macOS x64: MySQL v5.7.19 - v9.2.0
Linux, Windows, macOS x64: MySQL v5.7.19 - v9.3.0

Linux ARM64: MySQL v8.0.31 - v9.2.0
Linux ARM64: MySQL v8.0.31 - v9.3.0

macOS ARM64: MySQL v8.0.26 - v9.2.0
macOS ARM64: MySQL v8.0.26 - v9.3.0

Windows ARM64: N/A - Read about the ```arch``` option to run this package on your system

Expand All @@ -46,7 +46,7 @@ macOS:
| v8.0.28 - v8.0.31 | macOS 11 (Big Sur) |
| v8.0.32 - v8.0.34 | macOS 12 (Monterey) |
| v8.0.35 - v8.0.39 OR v8.1.0 - v8.4.2 OR v9.0.1 | macOS 13 (Ventura) |
| v8.0.40 - v8.0.41 OR v8.4.3 - v8.4.4 OR v9.1.0 - v9.2.0 | macOS 14 (Sonoma) |
| v8.0.40 - v8.0.42 OR v8.4.3 - v8.4.5 OR v9.1.0 - v9.3.0 | macOS 14 (Sonoma) |

## Operating System Maximum Version Requirements

Expand Down Expand Up @@ -86,4 +86,4 @@ Ubuntu Linux:

Fedora Linux: ```libaio1``` package and ```tar``` package

*Document last updated in v1.9.0*
*Document last updated in v1.10.0*
44 changes: 27 additions & 17 deletions src/constants.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { InternalServerOptions, OptionTypeChecks } from "../types";
import { randomUUID } from "crypto";
import {normalize as normalizePath} from 'path'
import { tmpdir } from "os";
import { valid as validSemver, coerce as coerceSemver } from "semver";
Expand Down Expand Up @@ -124,25 +123,25 @@ export const DOWNLOADABLE_MYSQL_VERSIONS = [

'8.0.0', '8.0.1', '8.0.2', '8.0.3', '8.0.4',

'8.0.11', '8.0.12', '8.0.13', '8.0.14', '8.0.15', '8.0.16', '8.0.17', '8.0.18', '8.0.19', '8.0.20', '8.0.21', '8.0.22', '8.0.23', '8.0.24', '8.0.25', '8.0.26', '8.0.27', '8.0.28', '8.0.30', '8.0.31', '8.0.32', '8.0.33', '8.0.34', '8.0.35', '8.0.36', '8.0.37', '8.0.39', '8.0.40', '8.0.41',
'8.0.11', '8.0.12', '8.0.13', '8.0.14', '8.0.15', '8.0.16', '8.0.17', '8.0.18', '8.0.19', '8.0.20', '8.0.21', '8.0.22', '8.0.23', '8.0.24', '8.0.25', '8.0.26', '8.0.27', '8.0.28', '8.0.30', '8.0.31', '8.0.32', '8.0.33', '8.0.34', '8.0.35', '8.0.36', '8.0.37', '8.0.39', '8.0.40', '8.0.41', '8.0.42',

'8.1.0', '8.2.0', '8.3.0',

'8.4.0', '8.4.2', '8.4.3', '8.4.4',
'8.4.0', '8.4.2', '8.4.3', '8.4.4', '8.4.5',

'9.0.1', '9.1.0', '9.2.0'
'9.0.1', '9.1.0', '9.2.0', '9.3.0'
] as const;
export const MYSQL_ARCH_SUPPORT = {
darwin: {
arm64: '8.0.26 - 9.2.0',
x64: '5.7.19 - 9.2.0'
arm64: '8.0.26 - 9.3.0',
x64: '5.7.19 - 9.3.0'
},
linux: {
arm64: '8.0.31 - 9.2.0',
x64: '5.7.19 - 9.2.0'
arm64: '8.0.31 - 9.3.0',
x64: '5.7.19 - 9.3.0'
},
win32: {
x64: '5.7.19 - 9.2.0'
x64: '5.7.19 - 9.3.0'
}
} as const;
export const MYSQL_MIN_OS_SUPPORT = {
Expand All @@ -162,7 +161,7 @@ export const MYSQL_MIN_OS_SUPPORT = {
'8.0.28 - 8.0.31': '20.0.0',
'8.0.32 - 8.0.34': '21.0.0',
'8.0.35 - 8.0.39 || 8.1.0 - 8.4.2 || 9.0.1': '22.0.0',
'8.0.40 - 8.0.41 || 8.4.3 - 8.4.4 || 9.1.0 - 9.2.0': '23.0.0'
'8.0.40 - 8.0.42 || 8.4.3 - 8.4.5 || 9.1.0 - 9.3.0': '23.0.0'
}
} as const;
export const DMR_MYSQL_VERSIONS = '8.0.0 - 8.0.2';
Expand All @@ -177,26 +176,37 @@ export const MYSQL_MACOS_VERSIONS_IN_FILENAME = {
'8.0.30 - 8.0.31': 'macos12',
'8.0.32 - 8.0.35 || 8.1.0 - 8.2.0': 'macos13',
'8.0.36 - 8.0.40 || 8.3.0 - 8.4.3 || 9.0.1 - 9.1.0': 'macos14',
'8.0.41 || 8.4.4 || 9.2.0': 'macos15'
'8.0.41 - 8.0.42 || 8.4.4 - 8.4.5 || 9.2.0 - 9.3.0': 'macos15'
} as const;
export const MYSQL_LINUX_GLIBC_VERSIONS = {
'5.7.19 - 8.0.20': '2.12',
'8.0.21 - 9.2.0': '2.17'
//8.0.42, 8.4.5, and 9.3.0 with glibc 2.28 does NOT have a minimal install version for x64 but it DOES have arm64 support.
//8.0.42, 8.4.5, and 9.3.0 with glibc 2.17 DOES have a minimal install version for x64 but does NOT have arm64 support.
//The new versions having these differences between the glibc versions has led to the glibc versions being different depending on CPU architecture for this package.
//Neither glibc versions for the above MySQL versions have an arm64 minimal install.
x64: {
'5.7.19 - 8.0.20': '2.12',
'8.0.21 - 9.3.0': '2.17'
},
arm64: {
'5.7.19 - 8.0.20': '2.12',
'8.0.21 - 8.0.41 || 8.1.0 - 8.4.4 || 9.0.1 - 9.2.0': '2.17',
'8.0.42 || 8.4.5 || 9.3.0': '2.28'
}
} as const;
export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE = {
'5.7.19 - 8.0.15': 'no',
'8.0.16 - 8.0.20': 'no-glibc-tag',
'8.0.21 - 9.2.0': 'glibc-tag'
'8.0.21 - 9.3.0': 'glibc-tag'
} as const;
export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE_ARM64 = '>=8.0.33'
export const MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE_ARM64 = '8.0.33 - 8.0.41 || 8.1.0 - 8.4.4 || 9.0.1 - 9.2.0' //Not available for < 8.0.33 and 8.0.42, 8.4.5, and 9.3.0
export const MYSQL_LINUX_FILE_EXTENSIONS = {
x64: {
'5.7.19 - 8.0.11': 'gz',
'8.0.12 - 9.2.0': 'xz'
'8.0.12 - 9.3.0': 'xz'
},
arm64: {
'8.0.31 - 8.0.32': 'gz',
'8.0.33 - 9.2.0': 'xz'
'8.0.33 - 9.3.0': 'xz'
}
} as const;
export const MYSQL_LINUX_MINIMAL_REBUILD_VERSIONS = '8.0.26';
5 changes: 3 additions & 2 deletions src/libraries/Version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,10 @@ export default function getBinaryURL(versionToGet: string = "x", currentArch: st
const macOSVersionNameKey = MySQLmacOSVersionNameKeys.find(range => satisfies(selectedVersion, range))
fileLocation = `${major(selectedVersion)}.${minor(selectedVersion)}/mysql-${selectedVersion}${isRC ? '-rc' : isDMR ? '-dmr' : ''}-${MYSQL_MACOS_VERSIONS_IN_FILENAME[macOSVersionNameKey]}-${currentArch === 'x64' ? 'x86_64' : 'arm64'}.tar.gz`
} else if (currentOS === 'linux') {
const glibcVersionKeys = Object.keys(MYSQL_LINUX_GLIBC_VERSIONS);
const glibcObject = MYSQL_LINUX_GLIBC_VERSIONS[currentArch];
const glibcVersionKeys = Object.keys(glibcObject);
const glibcVersionKey = glibcVersionKeys.find(range => satisfies(selectedVersion, range))
const glibcVersion = MYSQL_LINUX_GLIBC_VERSIONS[glibcVersionKey];
const glibcVersion = glibcObject[glibcVersionKey];

const minimalInstallAvailableKeys = Object.keys(MYSQL_LINUX_MINIMAL_INSTALL_AVAILABLE);
const minimalInstallAvailableKey = minimalInstallAvailableKeys.find(range => satisfies(selectedVersion, range))
Expand Down