TestDMLUpdateFromJoin tests UPDATE with FROM clause (join)
(t *testing.T)
| 273 | |
| 274 | // TestDMLUpdateFromJoin tests UPDATE with FROM clause (join) |
| 275 | func TestDMLUpdateFromJoin(t *testing.T) { |
| 276 | mustExec(t, testHarness.DuckgresDB, "CREATE TABLE dml_update_target (id INTEGER, value INTEGER)") |
| 277 | mustExec(t, testHarness.DuckgresDB, "CREATE TABLE dml_update_source (id INTEGER, new_value INTEGER)") |
| 278 | mustExec(t, testHarness.DuckgresDB, "INSERT INTO dml_update_target VALUES (1, 10), (2, 20), (3, 30)") |
| 279 | mustExec(t, testHarness.DuckgresDB, "INSERT INTO dml_update_source VALUES (1, 100), (2, 200)") |
| 280 | |
| 281 | t.Run("update_from_join", func(t *testing.T) { |
| 282 | _, err := testHarness.DuckgresDB.Exec(` |
| 283 | UPDATE dml_update_target |
| 284 | SET value = dml_update_source.new_value |
| 285 | FROM dml_update_source |
| 286 | WHERE dml_update_target.id = dml_update_source.id |
| 287 | `) |
| 288 | if err != nil { |
| 289 | t.Fatalf("Update from join failed: %v", err) |
| 290 | } |
| 291 | // Verify |
| 292 | result, _ := ExecuteQuery(testHarness.DuckgresDB, "SELECT value FROM dml_update_target WHERE id = 1") |
| 293 | if result.Rows[0][0].(int64) != 100 { |
| 294 | t.Errorf("Expected value=100, got %v", result.Rows[0][0]) |
| 295 | } |
| 296 | }) |
| 297 | |
| 298 | // Cleanup |
| 299 | mustExec(t, testHarness.DuckgresDB, "DROP TABLE IF EXISTS dml_update_target") |
| 300 | mustExec(t, testHarness.DuckgresDB, "DROP TABLE IF EXISTS dml_update_source") |
| 301 | } |
| 302 | |
| 303 | // TestDMLDelete tests DELETE variations |
| 304 | func TestDMLDelete(t *testing.T) { |
nothing calls this directly
no test coverage detected