Skip to content

Commit aee10d5

Browse files
authored
fix: misc fixes for QE WASM MSSQL (#5485)
Fixes for a couple of WASM QE tests. Also adds the WASM QE tests to the CI. /prisma-branch fix/mssql-qe-wasm-fixes
1 parent 39043d8 commit aee10d5

12 files changed

Lines changed: 51 additions & 31 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,8 @@ jobs:
229229
setup_task: 'dev-d1'
230230
- name: 'better-sqlite3 (wasm)'
231231
setup_task: 'dev-better-sqlite3'
232+
- name: 'mssql (wasm)'
233+
setup_task: 'dev-mssql-wasm'
232234
name: ${{ matrix.adapter.name }}
233235
uses: ./.github/workflows/test-driver-adapters-template.yml
234236
with:

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,9 @@ start-mssql_edge:
376376
dev-mssql_edge: start-mssql_edge
377377
cp $(CONFIG_PATH)/sqlserver2019 $(CONFIG_FILE)
378378

379+
dev-mssql-wasm: start-mssql_2022 build-qe-wasm build-driver-adapters-kit-qe
380+
cp $(CONFIG_PATH)/sqlserver-wasm $(CONFIG_FILE)
381+
379382
dev-mssql-qc: start-mssql_2022 build-qc-wasm build-driver-adapters-kit-qc
380383
cp $(CONFIG_PATH)/sqlserver-qc $(CONFIG_FILE)
381384

libs/driver-adapters/src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ pub struct SqliteErrorDef {
4343

4444
#[cfg(feature = "mssql")]
4545
#[derive(Deserialize)]
46-
#[serde(remote = "MssqlError")]
46+
#[serde(remote = "MssqlError", rename_all = "camelCase")]
4747
pub struct MssqlErrorDef {
4848
pub code: u32,
4949
pub message: String,

quaint/src/connector/mssql/error.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ impl From<MssqlError> for Error {
1717

1818
let mut builder = Error::builder(kind);
1919

20-
builder.set_original_code(format!("{}", error.code));
20+
builder.set_original_code(error.code.to_string());
2121
builder.set_original_message(error.message);
2222

2323
builder.build()
@@ -27,7 +27,7 @@ impl From<MssqlError> for Error {
2727

2828
let mut builder = Error::builder(kind);
2929

30-
builder.set_original_code(format!("{}", error.code));
30+
builder.set_original_code(error.code.to_string());
3131
builder.set_original_message(error.message);
3232

3333
builder.build()
@@ -38,7 +38,7 @@ impl From<MssqlError> for Error {
3838

3939
let mut builder = Error::builder(kind);
4040

41-
builder.set_original_code(format!("{}", error.code));
41+
builder.set_original_code(error.code.to_string());
4242
builder.set_original_message(error.message);
4343

4444
builder.build()
@@ -48,7 +48,7 @@ impl From<MssqlError> for Error {
4848
let kind = ErrorKind::DatabaseDoesNotExist { db_name };
4949
let mut builder = Error::builder(kind);
5050

51-
builder.set_original_code(format!("{}", error.code));
51+
builder.set_original_code(error.code.to_string());
5252
builder.set_original_message(error.message);
5353

5454
builder.build()
@@ -65,7 +65,7 @@ impl From<MssqlError> for Error {
6565
let kind = ErrorKind::NullConstraintViolation { constraint };
6666
let mut builder = Error::builder(kind);
6767

68-
builder.set_original_code(format!("{}", error.code));
68+
builder.set_original_code(error.code.to_string());
6969
builder.set_original_message(error.message);
7070

7171
builder.build()
@@ -76,7 +76,7 @@ impl From<MssqlError> for Error {
7676

7777
let mut builder = Error::builder(kind);
7878

79-
builder.set_original_code(format!("{}", error.code));
79+
builder.set_original_code(error.code.to_string());
8080
builder.set_original_message(error.message);
8181

8282
builder.build()
@@ -95,7 +95,7 @@ impl From<MssqlError> for Error {
9595
let kind = ErrorKind::UniqueConstraintViolation { constraint };
9696
let mut builder = Error::builder(kind);
9797

98-
builder.set_original_code(format!("{}", error.code));
98+
builder.set_original_code(error.code.to_string());
9999
builder.set_original_message(error.message);
100100

101101
builder.build()
@@ -114,7 +114,7 @@ impl From<MssqlError> for Error {
114114
let kind = ErrorKind::ForeignKeyConstraintViolation { constraint };
115115
let mut builder = Error::builder(kind);
116116

117-
builder.set_original_code(format!("{}", error.code));
117+
builder.set_original_code(error.code.to_string());
118118
builder.set_original_message(error.message);
119119

120120
builder.build()
@@ -131,7 +131,7 @@ impl From<MssqlError> for Error {
131131
let kind = ErrorKind::UniqueConstraintViolation { constraint };
132132
let mut builder = Error::builder(kind);
133133

134-
builder.set_original_code(format!("{}", error.code));
134+
builder.set_original_code(error.code.to_string());
135135
builder.set_original_message(error.message);
136136

137137
builder.build()
@@ -149,7 +149,7 @@ impl From<MssqlError> for Error {
149149
let kind = ErrorKind::UniqueConstraintViolation { constraint };
150150
let mut builder = Error::builder(kind);
151151

152-
builder.set_original_code(format!("{}", error.code));
152+
builder.set_original_code(error.code.to_string());
153153
builder.set_original_message(error.message);
154154

155155
builder.build()
@@ -160,7 +160,7 @@ impl From<MssqlError> for Error {
160160

161161
let mut builder = Error::builder(kind);
162162

163-
builder.set_original_code(format!("{}", error.code));
163+
builder.set_original_code(error.code.to_string());
164164
builder.set_original_message(error.message);
165165

166166
builder.build()
@@ -176,7 +176,7 @@ impl From<MssqlError> for Error {
176176
let kind = ErrorKind::TableDoesNotExist { table };
177177
let mut builder = Error::builder(kind);
178178

179-
builder.set_original_code(format!("{}", error.code));
179+
builder.set_original_code(error.code.to_string());
180180
builder.set_original_message(error.message);
181181

182182
builder.build()
@@ -192,22 +192,22 @@ impl From<MssqlError> for Error {
192192
let kind = ErrorKind::ColumnNotFound { column };
193193
let mut builder = Error::builder(kind);
194194

195-
builder.set_original_code(format!("{}", error.code));
195+
builder.set_original_code(error.code.to_string());
196196
builder.set_original_message(error.message);
197197

198198
builder.build()
199199
}
200200
1205 => {
201201
let mut builder = Error::builder(ErrorKind::TransactionWriteConflict);
202202

203-
builder.set_original_code(format!("{}", error.code));
203+
builder.set_original_code(error.code.to_string());
204204
builder.set_original_message(error.message);
205205

206206
builder.build()
207207
}
208208
5828 => {
209209
let mut builder = Error::builder(ErrorKind::TooManyConnections(error.clone().into()));
210-
builder.set_original_code(format!("{}", error.code));
210+
builder.set_original_code(error.code.to_string());
211211
builder.set_original_message(error.message);
212212

213213
builder.build()
@@ -216,7 +216,7 @@ impl From<MssqlError> for Error {
216216
let kind = ErrorKind::QueryError(error.clone().into());
217217

218218
let mut builder = Error::builder(kind);
219-
builder.set_original_code(format!("{}", error.code));
219+
builder.set_original_code(error.code.to_string());
220220
builder.set_original_message(error.message);
221221

222222
builder.build()
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
new::interactive_tx::interactive_tx::batch_queries_failure
21
new::regressions::max_integer::max_integer::unfitted_int_should_fail
32
new::regressions::max_integer::max_integer::unfitted_int_should_fail_mssql
43
new::regressions::prisma_7434::not_in_chunking::not_in_batch_filter
54
queries::aggregation::group_by::aggregation_group_by::group_by_ordering_sum_aggregation
65
queries::chunking::chunking::order_by_aggregation_should_fail
76
queries::filters::self_relation_regression::sr_regression::all_categories
8-
raw::sql::typed_output::typed_output::unknown_type_mssql
9-
writes::data_types::bytes::bytes::using_bytes_field
10-
writes::data_types::decimal::decimal::using_decimal_as_id
117
writes::data_types::native_types::sql_server::sql_server::native_decimal_type
128
writes::nested_mutations::already_converted::nested_connect_inside_update::connect_inside_update::p1_c1req_rel_child_idempotent
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1+
new::interactive_tx::interactive_tx::batch_queries_failure

query-engine/connector-test-kit-rs/query-engine-tests/tests/new/regressions/max_integer.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -598,41 +598,41 @@ mod max_integer {
598598
runner,
599599
format!("mutation {{ createOneTest(data: {{ tinyint: {U8_OVERFLOW_MAX} }}) {{ id }} }}"),
600600
None,
601-
"Arithmetic overflow error converting expression to data type tinyint"
601+
"Arithmetic overflow error"
602602
);
603603
assert_error!(
604604
runner,
605605
format!("mutation {{ createOneTest(data: {{ tinyint: {OVERFLOW_MIN} }}) {{ id }} }}"),
606606
None,
607-
"Arithmetic overflow error converting expression to data type tinyint"
607+
"Arithmetic overflow error"
608608
);
609609

610610
// smallint
611611
assert_error!(
612612
runner,
613613
format!("mutation {{ createOneTest(data: {{ smallint: {I16_OVERFLOW_MAX} }}) {{ id }} }}"),
614614
None,
615-
"Arithmetic overflow error converting expression to data type smallint"
615+
"Arithmetic overflow error"
616616
);
617617
assert_error!(
618618
runner,
619619
format!("mutation {{ createOneTest(data: {{ smallint: {I16_OVERFLOW_MIN} }}) {{ id }} }}"),
620620
None,
621-
"Arithmetic overflow error converting expression to data type smallint."
621+
"Arithmetic overflow error"
622622
);
623623

624624
// int
625625
assert_error!(
626626
runner,
627627
format!("mutation {{ createOneTest(data: {{ int: {I32_OVERFLOW_MAX} }}) {{ id }} }}"),
628628
None,
629-
"Arithmetic overflow error converting expression to data type int"
629+
"Arithmetic overflow error"
630630
);
631631
assert_error!(
632632
runner,
633633
format!("mutation {{ createOneTest(data: {{ int: {I32_OVERFLOW_MIN} }}) {{ id }} }}"),
634634
None,
635-
"Arithmetic overflow error converting expression to data type int"
635+
"Arithmetic overflow error"
636636
);
637637

638638
Ok(())

query-engine/connector-test-kit-rs/query-engine-tests/tests/raw/sql/typed_output.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ mod typed_output {
542542
Ok(())
543543
}
544544

545-
#[connector_test(schema(generic), only(SqlServer))]
545+
#[connector_test(schema(generic), only(SqlServer("2017", "2019", "2022")))]
546546
async fn unknown_type_mssql(runner: Runner) -> TestResult<()> {
547547
assert_error!(
548548
&runner,
@@ -554,6 +554,18 @@ mod typed_output {
554554
Ok(())
555555
}
556556

557+
#[connector_test(schema(generic), only(SqlServer("mssql.js.wasm")))]
558+
async fn unknown_type_mssql_js(runner: Runner) -> TestResult<()> {
559+
assert_error!(
560+
&runner,
561+
fmt_query_raw(r#"SELECT geometry::Parse('POINT(3 4 7 2.5)');"#, vec![]),
562+
2010,
563+
"Failed to deserialize column of type 'geometry'"
564+
);
565+
566+
Ok(())
567+
}
568+
557569
async fn create_row(runner: &Runner, data: &str) -> TestResult<()> {
558570
runner
559571
.query(format!("mutation {{ createOneTestModel(data: {data}) {{ id }} }}"))

query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/bytes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ mod bytes {
3131
}
3232

3333
// "Using a bytes field" should "work"
34-
#[connector_test(schema(basic))]
34+
#[connector_test(schema(basic), exclude(Sqlserver("mssql.js.wasm")))]
3535
async fn using_bytes_field(runner: Runner) -> TestResult<()> {
3636
insta::assert_snapshot!(
3737
run_query!(&runner, r#"mutation {

query-engine/connector-test-kit-rs/query-engine-tests/tests/writes/data_types/decimal.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ mod decimal {
7676
schema.to_owned()
7777
}
7878

79-
#[connector_test(schema(deicmal_id), capabilities(DecimalType))]
79+
#[connector_test(schema(deicmal_id), capabilities(DecimalType), exclude(Sqlserver("mssql.js.wasm")))]
8080
async fn using_decimal_as_id(runner: Runner) -> TestResult<()> {
8181
insta::assert_snapshot!(
8282
run_query!(&runner, r#"mutation { createOneModel( data: { id: "1000000000" } ) { id } }"#),

0 commit comments

Comments
 (0)