Skip to content

Commit 37ca69a

Browse files
author
Chad Berchek
committed
Merge branch 'master' of github.com:sidorares/node-mysql2 into fix/tls-stream-backpressure
2 parents 5c7ec13 + 001a183 commit 37ca69a

File tree

189 files changed

+12613
-5823
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+12613
-5823
lines changed

.eslintrc

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"extends": ["prettier", "eslint:recommended", "plugin:markdown/recommended"],
2+
"extends": ["prettier", "eslint:recommended", "plugin:markdown/recommended"],
33
"parserOptions": {
4-
"ecmaVersion": 2017
4+
"ecmaVersion": "latest"
55
},
66
"plugins": ["markdown", "async-await"],
77
"env": {
@@ -39,13 +39,37 @@
3939
},
4040
"overrides": [
4141
{
42-
"files": ["**/*.ts"],
42+
"files": ["**/*.ts"],
4343
"parser": "@typescript-eslint/parser",
44-
"extends": [
45-
"plugin:@typescript-eslint/recommended",
46-
"prettier"
47-
],
48-
"plugins": ["@typescript-eslint"]
44+
"extends": ["plugin:@typescript-eslint/recommended"],
45+
"plugins": ["@typescript-eslint"],
46+
"rules": {
47+
"@typescript-eslint/no-empty-interface": "off",
48+
"@typescript-eslint/no-explicit-any": "off",
49+
"arrow-parens": "off",
50+
"no-restricted-syntax": [
51+
"error",
52+
{
53+
"selector": "ImportDeclaration[source.value=/^\\./][source.value!=/\\.(js)$/]",
54+
"message": "Local imports must have the explicit extension"
55+
}
56+
]
57+
}
58+
},
59+
{
60+
"files": ["**/*.md/*js", "**/*.md/*ts"],
61+
"rules": {
62+
"no-undef": "off",
63+
"no-unused-vars": "off",
64+
"@typescript-eslint/no-unused-vars": "off",
65+
"no-console": "off",
66+
"no-unused-labels": "off",
67+
"strict": "off",
68+
"prefer-arrow-callback": "off"
69+
},
70+
"parserOptions": {
71+
"sourceType": "module"
72+
}
4973
}
5074
]
5175
}

.github/workflows/ci-bun.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: CI - Linux (bun)
2+
3+
# this will be merged with ci-linux.yml
4+
5+
on:
6+
pull_request:
7+
push:
8+
branches: [ main ]
9+
10+
workflow_dispatch:
11+
12+
env:
13+
MYSQL_PORT: 3306
14+
MYSQL_USER: root
15+
MYSQL_DATABASE: test
16+
17+
jobs:
18+
tests-linux:
19+
runs-on: ubuntu-latest
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
bun-version: [canary]
24+
mysql-version: ["mysql:5.7", "mysql:8.0.18", "mysql:8.0.22"]
25+
use-compression: [0, 1]
26+
use-tls: [0,1]
27+
include:
28+
- bun-version: "0.6.13"
29+
use-compression: 1
30+
use-tls: 0
31+
mysql-version: "mysql:8.0.18"
32+
- bun-version: "0.6.13"
33+
use-compression: 1
34+
use-tls: 0
35+
mysql-version: "mysql:8.0.22"
36+
37+
name: Bun ${{ matrix.bun-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
38+
39+
steps:
40+
- uses: actions/checkout@v3
41+
- name: Set up MySQL
42+
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/examples/custom-conf:/etc/mysql/conf.d -v $PWD/examples/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
43+
44+
- name: Set up Bun ${{ matrix.bun-version }}
45+
uses: oven-sh/setup-bun@v1
46+
with:
47+
bun-version: ${{ matrix.bun-version }}
48+
49+
- name: Set up Node.js
50+
uses: actions/setup-node@v3
51+
with:
52+
node-version: 18
53+
- name: Cache dependencies
54+
uses: actions/cache@v3
55+
with:
56+
path: ~/.npm
57+
key: npm-${{ hashFiles('package-lock.json') }}
58+
restore-keys: npm-
59+
60+
- name: Install npm dependencies
61+
run: npm ci
62+
63+
# - name: Install npm dependencies
64+
# run: bun install
65+
66+
- name: Wait mysql server is ready
67+
run: node tools/wait-up.js
68+
69+
# todo: run full test suite once test createServer is implemented using Bun.listen
70+
- name: run tests
71+
env:
72+
MYSQL_USER: ${{ env.MYSQL_USER }}
73+
MYSQL_DATABASE: ${{ env.MYSQL_DATABASE }}
74+
MYSQL_PORT: ${{ env.MYSQL_PORT }}
75+
MYSQL_USE_COMPRESSION: ${{ matrix.use-compression }}
76+
MYSQL_USE_TLS: ${{ matrix.use-tls }}
77+
run: |
78+
bun test/integration/connection/test-select-1.js
79+
bun test/integration/connection/test-select-ssl.js

.github/workflows/ci-linux.yml

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,33 @@ jobs:
2929
strategy:
3030
fail-fast: false
3131
matrix:
32-
node-version: [16.x, 18.x]
33-
mysql-version: ["mysql:8.0.18", "mysql:8.0.22", "mysql:5.7"]
32+
node-version: [16.x, 18.x, 20.x]
33+
mysql-version: ["mysql:8.0.18", "mysql:8.0.22", "mysql:8.0.33", "mysql:5.7"]
3434
use-compression: [0]
3535
use-tls: [0]
36+
mysql_connection_url_key: [""]
3637
# TODO - add mariadb to the matrix. currently few tests are broken due to mariadb incompatibilities
3738
include:
39+
# 20.x
40+
- node-version: "20.x"
41+
mysql-version: "mysql:8.0.33"
42+
use-compression: 1
43+
use-tls: 0
44+
use-builtin-test-runner: 1
45+
- node-version: "20.x"
46+
mysql-version: "mysql:8.0.33"
47+
use-compression: 0
48+
use-tls: 1
49+
use-builtin-test-runner: 1
50+
51+
# 18.x
52+
# - node-version: "18.x"
53+
# mysql_connection_url_key: "PS_MYSQL_URL"
54+
# filter: "test-select"
55+
# use-compression: 0
56+
# use-tls: 0
57+
58+
# 16.x
3859
- node-version: "16.x"
3960
mysql-version: "mysql:8.0.18"
4061
use-compression: 1
@@ -47,30 +68,36 @@ jobs:
4768
mysql-version: "mysql:8.0.18"
4869
use-compression: 1
4970
use-tls: 1
71+
72+
# 14.x
5073
- node-version: "14.x"
5174
mysql-version: "mysql:5.7"
5275
use-compression: 0
5376
use-tls: 0
54-
- node-version: "12.x"
55-
mysql-version: "mysql:5.7"
56-
use-compression: 0
57-
use-tls: 0
58-
- filter: "5.1only"
77+
78+
# filter
79+
- filter: "test-select-1" # a number of tests does not work with mysql 5.1 due to old sql syntax, just testing basic connection
5980
node-version: "16.x"
6081
mysql-version: "datagrip/mysql:5.1"
6182
use-compression: 0
6283
use-tls: 0
84+
env:
85+
MYSQL_CONNECTION_URL: ${{ secrets[matrix.mysql_connection_url_key] }}
6386

64-
name: Node.js ${{ matrix.node-version }} - DB ${{ matrix.mysql-version }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
87+
name: Node.js ${{ matrix.node-version }} - DB ${{ matrix.mysql-version }}${{ matrix.mysql_connection_url_key }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
6588

6689
steps:
6790
- uses: actions/checkout@v3
91+
6892
- name: Set up MySQL
69-
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_ROOT_PASSWORD=${{ env.MYSQL_PASSWORD }} -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/examples/custom-conf:/etc/mysql/conf.d -v $PWD/examples/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
93+
if: ${{ matrix.mysql-version }}
94+
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -v $PWD/mysqldata:/var/lib/mysql/ -v $PWD/examples/custom-conf:/etc/mysql/conf.d -v $PWD/examples/ssl/certs:/certs -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
95+
7096
- name: Set up Node.js ${{ matrix.node-version }}
7197
uses: actions/setup-node@v3
7298
with:
7399
node-version: ${{ matrix.node-version }}
100+
74101
- name: Cache dependencies
75102
uses: actions/cache@v3
76103
with:
@@ -80,14 +107,20 @@ jobs:
80107

81108
- name: Install npm dependencies
82109
run: npm ci
110+
83111
- name: Wait mysql server is ready
112+
if: ${{ matrix.mysql-version }}
84113
run: node tools/wait-up.js
85114

86115
- name: Run tests
87116
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run coverage-test
88117

89-
- run: echo "coverage-artifact-name=`echo -n "${{github.run_id}}-${{ matrix.node-version }}-${{ matrix.mysql-version }}-${{matrix.use-tls}}-${{matrix.use-compression}}" | shasum | cut -d " " -f 1`" >> $GITHUB_ENV
90-
- uses: actions/upload-artifact@v2
118+
- name: Run tests with built-in node test runner
119+
if: ${{ matrix.use-builtin-test-runner }}
120+
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run test:builtin-node-runner
121+
122+
- run: echo "coverage-artifact-name=`echo -n "${{github.run_id}}-${{ matrix.node-version }}-${{ matrix.mysql-version }}-{${{ matrix.mysql_connection_url_key }}-${{matrix.use-tls}}-${{matrix.use-compression}}" | shasum | cut -d " " -f 1`" >> $GITHUB_ENV
123+
- uses: actions/upload-artifact@v3
91124
with:
92125
name: coverage-${{env.coverage-artifact-name}}
93126
path: coverage/cobertura-coverage.xml

.github/workflows/ci-osx.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: CI - OSX
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches: [ main ]
7+
8+
workflow_dispatch:
9+
10+
env:
11+
MYSQL_PORT: 3306
12+
MYSQL_USER: root
13+
MYSQL_DATABASE: test
14+
15+
jobs:
16+
tests-osx:
17+
runs-on: macos-13
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
node-version: [18.x, 20.x]
22+
mysql-version: ["mysql:8.0.22", "mysql:8.0.33"]
23+
use-compression: [0, 1]
24+
use-tls: [0]
25+
mysql_connection_url_key: [""]
26+
# TODO - add mariadb to the matrix. currently few tests are broken due to mariadb incompatibilities
27+
include:
28+
# 20.x
29+
- node-version: "20.x"
30+
mysql-version: "mysql:8.0.33"
31+
use-compression: 1
32+
use-tls: 0
33+
use-builtin-test-runner: 1
34+
- node-version: "20.x"
35+
mysql-version: "mysql:8.0.33"
36+
use-compression: 0
37+
use-tls: 1
38+
use-builtin-test-runner: 1
39+
env:
40+
MYSQL_CONNECTION_URL: ${{ secrets[matrix.mysql_connection_url_key] }}
41+
42+
name: Node.js ${{ matrix.node-version }} - DB ${{ matrix.mysql-version }}${{ matrix.mysql_connection_url_key }} - SSL=${{matrix.use-tls}} Compression=${{matrix.use-compression}}
43+
44+
steps:
45+
- uses: actions/checkout@v3
46+
47+
- name: install lima
48+
run: brew install lima
49+
50+
- name: Setup Docker on macOS
51+
uses: douglascamata/setup-docker-macos-action@v1-alpha
52+
53+
- name: Set up MySQL
54+
if: ${{ matrix.mysql-version }}
55+
run: docker run -d -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_DATABASE=${{ env.MYSQL_DATABASE }} -p ${{ env.MYSQL_PORT }}:3306 ${{ matrix.mysql-version }}
56+
57+
- name: Set up Node.js ${{ matrix.node-version }}
58+
uses: actions/setup-node@v3
59+
with:
60+
node-version: ${{ matrix.node-version }}
61+
62+
- name: Cache dependencies
63+
uses: actions/cache@v3
64+
with:
65+
path: ~/.npm
66+
key: npm-${{ hashFiles('package-lock.json') }}
67+
restore-keys: npm-
68+
69+
- name: Install npm dependencies
70+
run: npm ci
71+
72+
- name: Wait mysql server is ready
73+
if: ${{ matrix.mysql-version }}
74+
run: node tools/wait-up.js
75+
76+
- name: Run tests
77+
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run coverage-test
78+
79+
- name: Run tests with built-in node test runner
80+
if: ${{ matrix.use-builtin-test-runner }}
81+
run: FILTER=${{matrix.filter}} MYSQL_USE_TLS=${{ matrix.use-tls }} MYSQL_USE_COMPRESSION=${{ matrix.use-compression }} npm run test:builtin-node-runner

.github/workflows/ci-tsc-build.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: CI - TypeScript Build
2+
3+
on:
4+
pull_request:
5+
push:
6+
branches: [ main ]
7+
8+
workflow_dispatch:
9+
10+
jobs:
11+
tests-tsc-build:
12+
runs-on: ubuntu-latest
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
node-version: [18.x]
17+
18+
name: Node.js ${{ matrix.node-version }}
19+
steps:
20+
- uses: actions/checkout@v3
21+
22+
- name: Set up Node.js ${{ matrix.node-version }}
23+
uses: actions/setup-node@v3
24+
with:
25+
node-version: ${{ matrix.node-version }}
26+
27+
- name: Cache dependencies
28+
uses: actions/cache@v3
29+
with:
30+
path: ~/.npm
31+
key: npm-${{ hashFiles('package-lock.json') }}
32+
restore-keys: npm-
33+
34+
- name: Install npm dependencies
35+
run: npm ci
36+
37+
- name: Testing TypeScript build
38+
run: npm run test:tsc-build

.github/workflows/ci-windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
strategy:
1919
fail-fast: false
2020
matrix:
21-
node-version: [16.x, 18.x]
21+
node-version: [18.x, 20.x]
2222
mysql-version: ['8.0']
2323
use-compression: [0, 1]
2424
use-tls: [0, 1]

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@ logs
2020
node_modules
2121
npm-debug.log
2222
benchmarks/results.json
23+
!test/fixtures/data.csv

0 commit comments

Comments
 (0)