@@ -2297,40 +2297,67 @@ func TestBatchUpdate_YDB(t *testing.T) {
22972297 }, args )
22982298 })
22992299
2300- t .Run ("BATCH UPDATE without WHERE clause" , func (t * testing.T ) {
2300+ t .Run ("BATCH UPDATE on non-YDB dialect should error" , func (t * testing.T ) {
2301+ builder := Dialect (dialect .MySQL ).
2302+ BatchUpdate ("users" ).
2303+ Set ("status" , "active" ).
2304+ Where (GT ("created_at" , "2024-01-01" ))
2305+
2306+ query , args , err := builder .QueryErr ()
2307+
2308+ require .Empty (t , query )
2309+ require .Empty (t , args )
2310+ require .Error (t , err )
2311+ })
2312+
2313+ t .Run ("BATCH UPDATE with RETURNING should error" , func (t * testing.T ) {
2314+ builder := Dialect (dialect .YDB ).
2315+ BatchUpdate ("users" ).
2316+ Set ("status" , "active" ).
2317+ Returning ("id" , "status" )
2318+
2319+ query , args , err := builder .QueryErr ()
2320+
2321+ require .Empty (t , query )
2322+ require .Empty (t , args )
2323+ require .Error (t , err )
2324+ })
2325+
2326+ t .Run ("BATCH UPDATE with UPDATE ON pattern should error" , func (t * testing.T ) {
23012327 d := Dialect (dialect .YDB )
2302- query , args := d .BatchUpdate ("users" ).
2328+ subquery := d .Select ("id" ).From (Table ("orders" )).Where (EQ ("status" , "pending" ))
2329+
2330+ builder := d .BatchUpdate ("users" ).
23032331 Set ("status" , "active" ).
2304- Query ( )
2332+ On ( subquery )
23052333
2306- require .Equal (t , "BATCH UPDATE `users` SET `status` = $p0" , query )
2307- require .Equal (t , []any {
2308- driver.NamedValue {Name : "p0" , Value : "active" },
2309- }, args )
2334+ query , args , err := builder .QueryErr ()
2335+
2336+ require .Empty (t , query )
2337+ require .Empty (t , args )
2338+ require .Error (t , err )
2339+ require .Contains (t , err .Error (), "BATCH UPDATE: UPDATE ON pattern is not supported" )
23102340 })
2341+ }
23112342
2312- t .Run ("BATCH UPDATE with multiple SET clauses" , func (t * testing.T ) {
2343+ func TestBatchDelete_YDB (t * testing.T ) {
2344+ t .Run ("Basic BATCH DELETE" , func (t * testing.T ) {
23132345 d := Dialect (dialect .YDB )
2314- query , args := d .BatchUpdate ("products" ).
2315- Set ("price" , 100 ).
2316- Set ("stock" , 50 ).
2317- Set ("updated_at" , "2024-01-01" ).
2318- Where (EQ ("category" , "electronics" )).
2346+ query , args := d .BatchDelete ("my_table" ).
2347+ Where (And (GT ("Key1" , 1 ), GTE ("Key2" , "One" ))).
23192348 Query ()
23202349
2321- require .Contains (t , query , "BATCH UPDATE `products` SET" )
2322- require .Contains (t , query , "`price` = $p0" )
2323- require .Contains (t , query , "`stock` = $p1" )
2324- require .Contains (t , query , "`updated_at` = $p2" )
2325- require .Contains (t , query , "WHERE `category` = $p3" )
2326- require .Len (t , args , 4 )
2350+ require .Equal (t , "BATCH DELETE FROM `my_table` WHERE `Key1` > $p0 AND `Key2` >= $p1" , query )
2351+ require .Equal (t , []any {
2352+ driver.NamedValue {Name : "p0" , Value : 1 },
2353+ driver.NamedValue {Name : "p1" , Value : "One" },
2354+ }, args )
23272355 })
23282356
2329- t .Run ("BATCH UPDATE on non-YDB dialect should error" , func (t * testing.T ) {
2357+ t .Run ("BATCH DELETE on non-YDB dialect should error" , func (t * testing.T ) {
23302358 builder := Dialect (dialect .MySQL ).
2331- BatchUpdate ("users" ).
2332- Set ("status" , "active" ).
2333- Where (GT ("created_at" , "2024-01-01" ))
2359+ BatchDelete ("users" ).
2360+ Where (GT ("id" , 100 ))
23342361
23352362 query , args , err := builder .QueryErr ()
23362363
@@ -2339,17 +2366,32 @@ func TestBatchUpdate_YDB(t *testing.T) {
23392366 require .Error (t , err )
23402367 })
23412368
2342- t .Run ("BATCH UPDATE with RETURNING should error" , func (t * testing.T ) {
2369+ t .Run ("BATCH DELETE with RETURNING should error" , func (t * testing.T ) {
23432370 builder := Dialect (dialect .YDB ).
2344- BatchUpdate ("users" ).
2345- Set ("status" , "active" ).
2346- Returning ("id" , "status" )
2371+ BatchDelete ("users" ).
2372+ Where (GT ("id" , 100 )).
2373+ Returning ("id" )
2374+
2375+ query , args , err := builder .QueryErr ()
2376+
2377+ require .Empty (t , query )
2378+ require .Empty (t , args )
2379+ require .Error (t , err )
2380+ })
2381+
2382+ t .Run ("BATCH DELETE with DELETE ON pattern should error" , func (t * testing.T ) {
2383+ d := Dialect (dialect .YDB )
2384+ subquery := d .Select ("id" ).From (Table ("users" )).Where (EQ ("status" , "deleted" ))
2385+
2386+ builder := d .BatchDelete ("users" ).
2387+ On (subquery )
23472388
23482389 query , args , err := builder .QueryErr ()
23492390
23502391 require .Empty (t , query )
23512392 require .Empty (t , args )
23522393 require .Error (t , err )
2394+ require .Contains (t , err .Error (), "BATCH DELETE: DELETE ON pattern is not supported" )
23532395 })
23542396}
23552397
0 commit comments