Skip to content
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
8 changes: 7 additions & 1 deletion .github/workflows/test-driver-adapters-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,26 @@ on:
setup_task:
type: string
required: true
relation_load_strategy:
type: string
default: '["join", "query"]'

jobs:
select_prisma_branch:
name: Select the Prisma branch to use
uses: ./.github/workflows/select-prisma-branch.yml

rust-query-engine-tests:
name: '${{ matrix.partition }}'
name: ${{ matrix.relation_load_strategy }} ${{ matrix.partition }}
needs: select_prisma_branch

strategy:
fail-fast: false
matrix:
node_version: ['20']
partition: ['1/4', '2/4', '3/4', '4/4']
relation_load_strategy: ${{ fromJson(inputs.relation_load_strategy) }}

env:
LOG_LEVEL: 'info' # Set to "debug" to trace the query engine and node process running the driver adapter
LOG_QUERIES: 'y'
Expand All @@ -32,6 +37,7 @@ jobs:
QUERY_BATCH_SIZE: '10'
WASM_BUILD_PROFILE: 'profiling' # Include debug info for proper backtraces
WORKSPACE_ROOT: ${{ github.workspace }}
PRISMA_RELATION_LOAD_STRATEGY: ${{ matrix.relation_load_strategy }}

runs-on: ubuntu-latest
steps:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/test-query-compiler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ jobs:

- name: mariadb
setup_task: dev-mariadb-qc
relation_load_strategy: '["query"]'

- name: mariadb-mysql
setup_task: dev-mariadb-mysql-qc
relation_load_strategy: '["join", "query"]'

- name: pg-cockroachdb
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/test-query-engine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -229,17 +229,25 @@ jobs:
setup_task: 'dev-neon-wasm'
- name: 'libsql (wasm)'
setup_task: 'dev-libsql-wasm'
relation_load_strategy: '["query"]'
- name: 'd1 (wasm)'
setup_task: 'dev-d1'
relation_load_strategy: '["query"]'
- name: 'better-sqlite3 (wasm)'
setup_task: 'dev-better-sqlite3-wasm'
relation_load_strategy: '["query"]'
- name: 'mssql (wasm)'
setup_task: 'dev-mssql-wasm'
relation_load_strategy: '["query"]'
- name: 'mariadb (wasm)'
setup_task: 'dev-mariadb-wasm'
relation_load_strategy: '["query"]'
- name: 'mariadb-mysql (wasm)'
setup_task: 'dev-mariadb-mysql-wasm'
- name: 'pg-cockroachdb (wasm)'
setup_task: 'dev-pg-cockroachdb-wasm'
name: ${{ matrix.adapter.name }}
uses: ./.github/workflows/test-driver-adapters-template.yml
with:
setup_task: ${{ matrix.adapter.setup_task }}
relation_load_strategy: ${{ matrix.adapter.relation_load_strategy }}
17 changes: 15 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -496,12 +496,25 @@ test-planetscale-qc: dev-planetscale-qc test-qe-st
test-driver-adapter-planetscale: test-planetscale-js
test-driver-adapter-planetscale-wasm: test-planetscale-wasm

dev-mariadb-wasm: start-mysql_8 build-qe-wasm build-driver-adapters-kit-qe
dev-mariadb-mysql-wasm: start-mysql_8 build-qe-wasm build-driver-adapters-kit-qe
cp $(CONFIG_PATH)/mariadb-mysql-wasm $(CONFIG_FILE)

test-mariadb-mysql-wasm: dev-mariadb-mysql-wasm test-qe-st

dev-mariadb-mysql-qc: start-mysql_8 build-qc-wasm build-driver-adapters-kit-qc
cp $(CONFIG_PATH)/mariadb-mysql-qc $(CONFIG_FILE)

test-mariadb-mysql-qc: dev-mariadb-mysql-qc test-qe-st

test-driver-adapter-mariadb-mysql: test-mariadb-mysql-js
test-driver-adapter-mariadb-mysql-wasm: test-mariadb-mysql-wasm

dev-mariadb-wasm: start-mysql_mariadb build-qe-wasm build-driver-adapters-kit-qe
cp $(CONFIG_PATH)/mariadb-wasm $(CONFIG_FILE)

test-mariadb-wasm: dev-mariadb-wasm test-qe-st

dev-mariadb-qc: start-mysql_8 build-qc-wasm build-driver-adapters-kit-qc
dev-mariadb-qc: start-mysql_mariadb build-qc-wasm build-driver-adapters-kit-qc
cp $(CONFIG_PATH)/mariadb-qc $(CONFIG_FILE)

test-mariadb-qc: dev-mariadb-qc test-qe-st
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ export class BetterSQLite3Manager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ export class D1Manager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ export class LibSQLManager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ export class MariaDbManager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand All @@ -56,6 +55,6 @@ function mariadbOptions(urlStr: string) {
database,
host,
port: Number(port),
connectionLimit: 4,
connectionLimit: 2,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,7 @@ export class MssqlManager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,7 @@ export class NeonWsManager implements DriverAdaptersManager {
neonConfig.useSecureWebSocket = false
neonConfig.pipelineConnect = false

this.#adapter = await this.#factory.connect()

return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ export class PgManager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ export class PlanetScaleManager implements DriverAdaptersManager {
}

async connect() {
this.#adapter = await this.#factory.connect()
return this.#adapter
return (this.#adapter ??= await this.#factory.connect())
}

async teardown() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use query_engine_tests::*;
Postgres("neon.js.wasm", "pg.js.wasm"),
Sqlite("libsql.js.wasm", "cfd1", "react-native", "better-sqlite3.js.wasm"),
Sqlserver("mssql.js.wasm"),
Mysql("mariadb.js.wasm"),
Mysql("mariadb.js.wasm", "mariadb-mysql.js.wasm"),
CockroachDb("pg.js.wasm")
)
)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use query_engine_tests::test_suite;
Postgres("neon.js.wasm", "pg.js.wasm"),
Sqlite("libsql.js.wasm", "cfd1", "react-native", "better-sqlite3.js.wasm"),
Sqlserver("mssql.js.wasm"),
Mysql("mariadb.js.wasm"),
Mysql("mariadb.js.wasm", "mariadb-mysql.js.wasm"),
CockroachDb("pg.js.wasm"),
)
)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,10 @@ mod relation_load_strategy_batch {
compacted_query(runner).await
}

#[connector_test(capabilities(CorrelatedSubqueries), exclude(Mysql("5.6", "5.7", "mariadb")))]
#[connector_test(
capabilities(CorrelatedSubqueries),
exclude(Mysql("5.6", "5.7", "mariadb", "mariadb.js.wasm"))
)]
async fn compacted_query_subquery(runner: Runner) -> TestResult<()> {
compacted_query(runner).await
}
Expand Down Expand Up @@ -104,7 +107,10 @@ mod relation_load_strategy_batch {
compacted_join(runner).await
}

#[connector_test(capabilities(CorrelatedSubqueries), exclude(Mysql("5.6", "5.7", "mariadb")))]
#[connector_test(
capabilities(CorrelatedSubqueries),
exclude(Mysql("5.6", "5.7", "mariadb", "mariadb.js.wasm"))
)]
async fn compacted_join_subquery(runner: Runner) -> TestResult<()> {
compacted_join(runner).await
}
Expand Down Expand Up @@ -140,7 +146,10 @@ mod relation_load_strategy_batch {
mixed_rls_does_not_compact(runner).await
}

#[connector_test(capabilities(CorrelatedSubqueries), exclude(Mysql("5.6", "5.7", "mariadb")))]
#[connector_test(
capabilities(CorrelatedSubqueries),
exclude(Mysql("5.6", "5.7", "mariadb", "mariadb.js.wasm"))
)]
async fn mixed_rls_does_not_compact_subquery(runner: Runner) -> TestResult<()> {
mixed_rls_does_not_compact(runner).await
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ mod relation_load_strategy {
$query,
$result,
capabilities(CorrelatedSubqueries),
exclude(Mysql("5.6", "5.7", "mariadb"))
exclude(Mysql("5.6", "5.7", "mariadb", "mariadb.js.wasm"))
);
relation_load_strategy_test!(
[<$name _lateral>],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ use query_engine_tests::*;
// Planetscale and MySQL via MariaDB driver consistently time out when running this test.
#[test_suite(
schema(schema),
exclude(MongoDb, Vitess("planetscale.js.wasm"), Mysql("mariadb.js.wasm"))
exclude(
MongoDb,
Vitess("planetscale.js.wasm"),
Mysql("mariadb.js.wasm"),
Mysql("mariadb-mysql.js.wasm")
)
)]
mod chunking_qc {
use indoc::indoc;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ mod json {
Vitess("planetscale.js.wasm"),
Postgres("neon.js.wasm", "pg.js.wasm"),
Sqlite("libsql.js.wasm", "cfd1", "better-sqlite3.js.wasm"),
MySQL(5.6, "mariadb.js.wasm"),
MySQL(5.6, "mariadb.js.wasm", "mariadb-mysql.js.wasm"),
CockroachDb("pg.js.wasm"),
)
)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ mod json_filters {

match runner.connector_version() {
// MariaDB does not support finding arrays in arrays, unlike MySQL
ConnectorVersion::MySql(Some(MySqlVersion::MariaDb)) => {
ConnectorVersion::MySql(Some(MySqlVersion::MariaDb | MySqlVersion::MariaDbJsWasm)) => {
let res = run_query!(runner, jsonq(&runner, r#"array_contains: "[[1, 2]]" "#, None));
insta::allow_duplicates! {
insta::assert_snapshot!(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ mod typed_output {
Ok(())
}

#[connector_test(schema(schema_mysql), only(MySql("mariadb.js.wasm")))]
#[connector_test(schema(schema_mysql), only(MySql("mariadb.js.wasm", "mariadb-mysql.js.wasm")))]
async fn all_scalars_mariadb_js(runner: Runner) -> TestResult<()> {
create_row(
&runner,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,10 @@ pub(crate) fn connection_string(
ConnectorVersion::MySql(v) => match v {
Some(MySqlVersion::V5_6) => format!("mysql://root:[email protected]:3309/{database}"),
Some(MySqlVersion::V5_7) => format!("mysql://root:[email protected]:3306/{database}"),
Some(MySqlVersion::V8 | MySqlVersion::MariaDbJsWasm) => {
Some(MySqlVersion::V8 | MySqlVersion::MariaDbMysqlJsWasm) => {
format!("mysql://root:[email protected]:3307/{database}")
}
Some(MySqlVersion::MariaDb) => {
Some(MySqlVersion::MariaDb | MySqlVersion::MariaDbJsWasm) => {
format!("mysql://root:[email protected]:3308/{database}")
}

Expand Down Expand Up @@ -285,6 +285,7 @@ impl ConnectorVersion {
| Self::Sqlite(Some(SqliteVersion::BetterSQLite3))
| Self::SqlServer(Some(SqlServerVersion::MssqlJsWasm))
| Self::MySql(Some(MySqlVersion::MariaDbJsWasm))
| Self::MySql(Some(MySqlVersion::MariaDbMysqlJsWasm))
| Self::CockroachDb(Some(CockroachDbVersion::PgJsWasm))
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ pub enum MySqlVersion {
V8,
MariaDb,
MariaDbJsWasm,
// Used for testing the MariaDB driver with a MySQL server.
MariaDbMysqlJsWasm,
}

impl TryFrom<&str> for MySqlVersion {
Expand All @@ -47,6 +49,7 @@ impl TryFrom<&str> for MySqlVersion {
"8" => Self::V8,
"mariadb" => Self::MariaDb,
"mariadb.js.wasm" => Self::MariaDbJsWasm,
"mariadb-mysql.js.wasm" => Self::MariaDbMysqlJsWasm,
_ => return Err(TestError::parse_error(format!("Unknown MySQL version `{s}`"))),
};

Expand All @@ -62,6 +65,7 @@ impl Display for MySqlVersion {
MySqlVersion::V8 => f.write_str("8"),
MySqlVersion::MariaDb => f.write_str("mariadb"),
MySqlVersion::MariaDbJsWasm => f.write_str("mariadb.js.wasm"),
MySqlVersion::MariaDbMysqlJsWasm => f.write_str("mariadb-mysql.js.wasm"),
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"connector": "mysql",
"version": "mariadb-mysql.js.wasm",
"driver_adapter": "mariadb",
"external_test_executor": "QueryCompiler"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"connector": "mysql",
"version": "mariadb-mysql.js.wasm",
"driver_adapter": "mariadb",
"external_test_executor": "Wasm"
}
Loading