Skip to content

Commit 58df82a

Browse files
committed
test: run tests against the mariadb adapter
1 parent 0c4d4d2 commit 58df82a

21 files changed

Lines changed: 137 additions & 6 deletions

File tree

.github/workflows/test-query-compiler.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ jobs:
6868
should_fail_tests_list: query-compiler/query-engine-tests-todo/neon/fail
6969
relation_load_strategy: '["join", "query"]'
7070

71+
- name: mariadb
72+
setup_task: dev-mariadb-qc
73+
ignored_tests_list: query-compiler/query-engine-tests-todo/mariadb/skip
74+
should_fail_tests_list: query-compiler/query-engine-tests-todo/mariadb/fail
75+
relation_load_strategy: '["query"]'
76+
7177
name: ${{ matrix.adapter.name }}
7278

7379
uses: ./.github/workflows/test-query-compiler-template.yml

.github/workflows/test-query-engine.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ jobs:
231231
setup_task: 'dev-better-sqlite3'
232232
- name: 'mssql (wasm)'
233233
setup_task: 'dev-mssql-wasm'
234+
- name: 'mariadb (wasm)'
235+
setup_task: 'dev-mariadb-wasm'
234236
name: ${{ matrix.adapter.name }}
235237
uses: ./.github/workflows/test-driver-adapters-template.yml
236238
with:

Makefile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,19 @@ test-planetscale-qc: dev-planetscale-qc test-qe-st
461461
test-driver-adapter-planetscale: test-planetscale-js
462462
test-driver-adapter-planetscale-wasm: test-planetscale-wasm
463463

464+
dev-mariadb-wasm: start-mysql_8 build-qe-wasm build-driver-adapters-kit-qe
465+
cp $(CONFIG_PATH)/mariadb-wasm $(CONFIG_FILE)
466+
467+
test-mariadb-wasm: dev-mariadb-wasm test-qe-st
468+
469+
dev-mariadb-qc: start-mysql_8 build-qc-wasm build-driver-adapters-kit-qc
470+
cp $(CONFIG_PATH)/mariadb-qc $(CONFIG_FILE)
471+
472+
test-mariadb-qc: dev-mariadb-qc test-qe-st
473+
474+
test-driver-adapter-mariadb: test-mariadb-js
475+
test-driver-adapter-mariadb-wasm: test-mariadb-wasm
476+
464477
######################
465478
# Local dev commands #
466479
######################

libs/driver-adapters/executor/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"@prisma/adapter-neon": "workspace:*",
3232
"@prisma/adapter-pg": "workspace:*",
3333
"@prisma/adapter-planetscale": "workspace:*",
34+
"@prisma/adapter-mariadb": "workspace:*",
3435
"@prisma/bundled-js-drivers": "workspace:*",
3536
"@prisma/client-engine-runtime": "workspace:*",
3637
"@prisma/schema-engine-wasm": "../../../schema-engine/schema-engine-wasm/pkg",
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { PrismaMariaDb } from '@prisma/adapter-mariadb'
2+
import type {
3+
SqlDriverAdapter,
4+
SqlDriverAdapterFactory,
5+
} from '@prisma/driver-adapter-utils'
6+
import type {
7+
DriverAdaptersManager,
8+
SetupDriverAdaptersInput,
9+
} from './index.js'
10+
import type { DriverAdapterTag, EnvForAdapter } from '../types/index.js'
11+
12+
const TAG = 'mariadb' as const satisfies DriverAdapterTag
13+
type TAG = typeof TAG
14+
15+
export class MariaDbManager implements DriverAdaptersManager {
16+
#factory: SqlDriverAdapterFactory
17+
#adapter?: SqlDriverAdapter
18+
19+
private constructor(
20+
private env: EnvForAdapter<TAG>,
21+
{ url }: SetupDriverAdaptersInput,
22+
) {
23+
this.#factory = new PrismaMariaDb(mariadbOptions(url))
24+
}
25+
26+
static async setup(env: EnvForAdapter<TAG>, input: SetupDriverAdaptersInput) {
27+
return new MariaDbManager(env, input)
28+
}
29+
30+
factory() {
31+
return this.#factory
32+
}
33+
34+
async connect() {
35+
this.#adapter = await this.#factory.connect()
36+
return this.#adapter
37+
}
38+
39+
async teardown() {
40+
await this.#adapter?.dispose()
41+
}
42+
}
43+
44+
function mariadbOptions(urlStr: string) {
45+
const url = new URL(urlStr)
46+
const { username: user, password, hostname: host, port } = url
47+
const database = url.pathname && url.pathname.slice(1)
48+
49+
return {
50+
user,
51+
password,
52+
database,
53+
host,
54+
port: Number(port),
55+
connectionLimit: 4,
56+
}
57+
}

libs/driver-adapters/executor/src/setup.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { PlanetScaleManager } from './driver-adapters-manager/planetscale.js'
1111
import { D1Manager } from './driver-adapters-manager/d1.js'
1212
import { BetterSQLite3Manager } from './driver-adapters-manager/better-sqlite3.js'
1313
import { MssqlManager } from './driver-adapters-manager/mssql.js'
14+
import { MariaDbManager } from './driver-adapters-manager/mariadb.js'
1415

1516
export async function setupDriverAdaptersManager(
1617
env: Env,
@@ -45,5 +46,9 @@ export async function setupDriverAdaptersManager(
4546
{ DRIVER_ADAPTER: 'mssql' },
4647
async (env) => await MssqlManager.setup(env, input),
4748
)
49+
.with(
50+
{ DRIVER_ADAPTER: 'mariadb' },
51+
async (env) => await MariaDbManager.setup(env, input),
52+
)
4853
.exhaustive()
4954
}

libs/driver-adapters/executor/src/types/env.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const Env = S.extend(
5353
'd1',
5454
'better-sqlite3',
5555
'mssql',
56+
'mariadb',
5657
),
5758
}),
5859
),

libs/driver-adapters/pnpm-workspace.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ packages:
66
- '../../../prisma/packages/adapter-neon'
77
- '../../../prisma/packages/adapter-pg'
88
- '../../../prisma/packages/adapter-planetscale'
9+
- '../../../prisma/packages/adapter-mariadb'
910
- '../../../prisma/packages/bundled-js-drivers'
1011
- '../../../prisma/packages/client-engine-runtime'
1112
- '../../../prisma/packages/debug'
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
new::interactive_tx::interactive_tx::batch_queries_failure
2+
new::regressions::prisma_7434::not_in_chunking::not_in_batch_filter
3+
queries::aggregation::group_by::aggregation_group_by::group_by_ordering_sum_aggregation
4+
queries::chunking::chunking::order_by_aggregation_should_fail
5+
queries::filters::self_relation_regression::sr_regression::all_categories
6+
writes::nested_mutations::already_converted::nested_connect_inside_update::connect_inside_update::p1_c1req_rel_child_idempotent

query-compiler/query-engine-tests-todo/mariadb/skip/query

Whitespace-only changes.

0 commit comments

Comments
 (0)