MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / test_row_dml

Function test_row_dml

crates/core/src/sql/execute.rs:1626–1688  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1624 // Verify we don't return rows on DML
1625 #[test]
1626 fn test_row_dml() -> ResultTest<()> {
1627 let db = TestDB::durable()?;
1628
1629 let table_id = db.create_table_for_test("T", &[("a", AlgebraicType::U8)], &[])?;
1630 with_auto_commit(&db, |tx| -> Result<_, DBError> {
1631 for i in 0..4u8 {
1632 insert(&db, tx, table_id, &product!(i))?;
1633 }
1634 Ok(())
1635 })?;
1636
1637 let rt = db.runtime().expect("runtime should be there");
1638
1639 let server = Identity::from_claims("issuer", "server");
1640
1641 let internal_auth = AuthCtx::new(server, server);
1642
1643 let tmp_vec = Vec::new();
1644 let run = |db, sql: &str, auth, subs, mut tmp_vec| {
1645 let sql = sql.to_string();
1646 async move { run(db, sql, auth, subs, None, &mut tmp_vec).await }
1647 };
1648
1649 let check = |db, sql, auth, metrics: ExecutionMetrics| {
1650 let result = rt.block_on(run(db, sql, auth, None, tmp_vec.clone()))?;
1651 assert_eq!(result.rows, vec![]);
1652 assert_eq!(result.metrics.rows_inserted, metrics.rows_inserted);
1653 assert_eq!(result.metrics.rows_deleted, metrics.rows_deleted);
1654 assert_eq!(result.metrics.rows_updated, metrics.rows_updated);
1655
1656 Ok::<(), DBError>(())
1657 };
1658
1659 let ins = ExecutionMetrics {
1660 rows_inserted: 1,
1661 ..ExecutionMetrics::default()
1662 };
1663 let upd = ExecutionMetrics {
1664 rows_updated: 5,
1665 ..ExecutionMetrics::default()
1666 };
1667 let del = ExecutionMetrics {
1668 rows_deleted: 1,
1669 ..ExecutionMetrics::default()
1670 };
1671
1672 check(db.clone(), "INSERT INTO T (a) VALUES (5)", internal_auth.clone(), ins)?;
1673 check(db.clone(), "UPDATE T SET a = 2", internal_auth.clone(), upd)?;
1674 assert_eq!(
1675 rt.block_on(run(
1676 db.clone(),
1677 "SELECT * FROM T",
1678 internal_auth.clone(),
1679 None,
1680 tmp_vec.clone()
1681 ))?
1682 .rows,
1683 vec![product!(2u8)]

Callers

nothing calls this directly

Calls 10

with_auto_commitFunction · 0.85
create_table_for_testMethod · 0.80
runtimeMethod · 0.80
runFunction · 0.70
insertFunction · 0.50
OkFunction · 0.50
newFunction · 0.50
to_stringMethod · 0.45
block_onMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…