vitess.io/vitess@v0.16.2/go/vt/vtgate/planbuilder/testdata/dml_cases.json (about) 1 [ 2 { 3 "comment": "update table not found", 4 "query": "update nouser set val = 1", 5 "plan": "table nouser not found" 6 }, 7 { 8 "comment": "delete table not found", 9 "query": "delete from nouser", 10 "plan": "table nouser not found" 11 }, 12 { 13 "comment": "explicit keyspace reference", 14 "query": "update main.m1 set val = 1", 15 "plan": { 16 "QueryType": "UPDATE", 17 "Original": "update main.m1 set val = 1", 18 "Instructions": { 19 "OperatorType": "Update", 20 "Variant": "Unsharded", 21 "Keyspace": { 22 "Name": "main", 23 "Sharded": false 24 }, 25 "TargetTabletType": "PRIMARY", 26 "MultiShardAutocommit": false, 27 "Query": "update m1 set val = 1", 28 "Table": "m1" 29 }, 30 "TablesUsed": [ 31 "main.m1" 32 ] 33 } 34 }, 35 { 36 "comment": "update unsharded", 37 "query": "update unsharded set val = 1", 38 "plan": { 39 "QueryType": "UPDATE", 40 "Original": "update unsharded set val = 1", 41 "Instructions": { 42 "OperatorType": "Update", 43 "Variant": "Unsharded", 44 "Keyspace": { 45 "Name": "main", 46 "Sharded": false 47 }, 48 "TargetTabletType": "PRIMARY", 49 "MultiShardAutocommit": false, 50 "Query": "update unsharded set val = 1", 51 "Table": "unsharded" 52 }, 53 "TablesUsed": [ 54 "main.unsharded" 55 ] 56 } 57 }, 58 { 59 "comment": "subqueries in unsharded update", 60 "query": "update unsharded set col = (select col from unsharded limit 1)", 61 "plan": { 62 "QueryType": "UPDATE", 63 "Original": "update unsharded set col = (select col from unsharded limit 1)", 64 "Instructions": { 65 "OperatorType": "Update", 66 "Variant": "Unsharded", 67 "Keyspace": { 68 "Name": "main", 69 "Sharded": false 70 }, 71 "TargetTabletType": "PRIMARY", 72 "MultiShardAutocommit": false, 73 "Query": "update unsharded set col = (select col from unsharded limit 1)", 74 "Table": "unsharded" 75 }, 76 "TablesUsed": [ 77 "main.unsharded" 78 ] 79 } 80 }, 81 { 82 "comment": "unsharded union in subquery of unsharded update", 83 "query": "update unsharded set col = (select id from unsharded union select id from unsharded)", 84 "plan": { 85 "QueryType": "UPDATE", 86 "Original": "update unsharded set col = (select id from unsharded union select id from unsharded)", 87 "Instructions": { 88 "OperatorType": "Update", 89 "Variant": "Unsharded", 90 "Keyspace": { 91 "Name": "main", 92 "Sharded": false 93 }, 94 "TargetTabletType": "PRIMARY", 95 "MultiShardAutocommit": false, 96 "Query": "update unsharded set col = (select id from unsharded union select id from unsharded)", 97 "Table": "unsharded" 98 }, 99 "TablesUsed": [ 100 "main.unsharded" 101 ] 102 } 103 }, 104 { 105 "comment": "unsharded join in subquery of unsharded update", 106 "query": "update unsharded set col = (select id from unsharded a join unsharded b on a.id = b.id)", 107 "plan": { 108 "QueryType": "UPDATE", 109 "Original": "update unsharded set col = (select id from unsharded a join unsharded b on a.id = b.id)", 110 "Instructions": { 111 "OperatorType": "Update", 112 "Variant": "Unsharded", 113 "Keyspace": { 114 "Name": "main", 115 "Sharded": false 116 }, 117 "TargetTabletType": "PRIMARY", 118 "MultiShardAutocommit": false, 119 "Query": "update unsharded set col = (select id from unsharded as a join unsharded as b on a.id = b.id)", 120 "Table": "unsharded" 121 }, 122 "TablesUsed": [ 123 "main.unsharded" 124 ] 125 } 126 }, 127 { 128 "comment": "update with join subquery", 129 "query": "update unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id set col1 = 'asdf' where keepers.id is null and foo.col is not null and foo.col < 1000", 130 "plan": { 131 "QueryType": "UPDATE", 132 "Original": "update unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id set col1 = 'asdf' where keepers.id is null and foo.col is not null and foo.col < 1000", 133 "Instructions": { 134 "OperatorType": "Update", 135 "Variant": "Unsharded", 136 "Keyspace": { 137 "Name": "main", 138 "Sharded": false 139 }, 140 "TargetTabletType": "PRIMARY", 141 "MultiShardAutocommit": false, 142 "Query": "update unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id set col1 = 'asdf' where keepers.id is null and foo.col is not null and foo.col < 1000", 143 "Table": "unsharded" 144 }, 145 "TablesUsed": [ 146 "main.unsharded" 147 ] 148 } 149 }, 150 { 151 "comment": "routing rules: updated of a routed table", 152 "query": "update route1 set a=1 where id=1", 153 "v3-plan": { 154 "QueryType": "UPDATE", 155 "Original": "update route1 set a=1 where id=1", 156 "Instructions": { 157 "OperatorType": "Update", 158 "Variant": "Equal", 159 "Keyspace": { 160 "Name": "user", 161 "Sharded": true 162 }, 163 "TargetTabletType": "PRIMARY", 164 "MultiShardAutocommit": false, 165 "Query": "update `user` as route1 set a = 1 where id = 1", 166 "Table": "user", 167 "Values": [ 168 "INT64(1)" 169 ], 170 "Vindex": "user_index" 171 }, 172 "TablesUsed": [ 173 "user.user" 174 ] 175 }, 176 "gen4-plan": { 177 "QueryType": "UPDATE", 178 "Original": "update route1 set a=1 where id=1", 179 "Instructions": { 180 "OperatorType": "Update", 181 "Variant": "EqualUnique", 182 "Keyspace": { 183 "Name": "user", 184 "Sharded": true 185 }, 186 "TargetTabletType": "PRIMARY", 187 "MultiShardAutocommit": false, 188 "Query": "update `user` as route1 set a = 1 where id = 1", 189 "Table": "user", 190 "Values": [ 191 "INT64(1)" 192 ], 193 "Vindex": "user_index" 194 }, 195 "TablesUsed": [ 196 "user.user" 197 ] 198 } 199 }, 200 { 201 "comment": "update: routing rules for subquery.", 202 "query": "update unsharded_a set a=(select a from route2)", 203 "v3-plan": { 204 "QueryType": "UPDATE", 205 "Original": "update unsharded_a set a=(select a from route2)", 206 "Instructions": { 207 "OperatorType": "Update", 208 "Variant": "Unsharded", 209 "Keyspace": { 210 "Name": "main", 211 "Sharded": false 212 }, 213 "TargetTabletType": "PRIMARY", 214 "MultiShardAutocommit": false, 215 "Query": "update unsharded_a set a = (select a from unsharded as route2)", 216 "Table": "unsharded, unsharded_a" 217 }, 218 "TablesUsed": [ 219 "main.unsharded_a" 220 ] 221 }, 222 "gen4-plan": { 223 "QueryType": "UPDATE", 224 "Original": "update unsharded_a set a=(select a from route2)", 225 "Instructions": { 226 "OperatorType": "Update", 227 "Variant": "Unsharded", 228 "Keyspace": { 229 "Name": "main", 230 "Sharded": false 231 }, 232 "TargetTabletType": "PRIMARY", 233 "MultiShardAutocommit": false, 234 "Query": "update unsharded_a set a = (select a from unsharded as route2)", 235 "Table": "unsharded, unsharded_a" 236 }, 237 "TablesUsed": [ 238 "main.unsharded", 239 "main.unsharded_a" 240 ] 241 } 242 }, 243 { 244 "comment": "delete unsharded", 245 "query": "delete from unsharded", 246 "plan": { 247 "QueryType": "DELETE", 248 "Original": "delete from unsharded", 249 "Instructions": { 250 "OperatorType": "Delete", 251 "Variant": "Unsharded", 252 "Keyspace": { 253 "Name": "main", 254 "Sharded": false 255 }, 256 "TargetTabletType": "PRIMARY", 257 "MultiShardAutocommit": false, 258 "Query": "delete from unsharded", 259 "Table": "unsharded" 260 }, 261 "TablesUsed": [ 262 "main.unsharded" 263 ] 264 } 265 }, 266 { 267 "comment": "delete from sequence", 268 "query": "DELETE FROM seq", 269 "plan": { 270 "QueryType": "DELETE", 271 "Original": "DELETE FROM seq", 272 "Instructions": { 273 "OperatorType": "Delete", 274 "Variant": "Unsharded", 275 "Keyspace": { 276 "Name": "main", 277 "Sharded": false 278 }, 279 "TargetTabletType": "PRIMARY", 280 "MultiShardAutocommit": false, 281 "Query": "delete from seq", 282 "Table": "seq" 283 }, 284 "TablesUsed": [ 285 "main.seq" 286 ] 287 } 288 }, 289 { 290 "comment": "delete from reference table in unsharded keyspace", 291 "query": "DELETE FROM unsharded_ref", 292 "plan": { 293 "QueryType": "DELETE", 294 "Original": "DELETE FROM unsharded_ref", 295 "Instructions": { 296 "OperatorType": "Delete", 297 "Variant": "Unsharded", 298 "Keyspace": { 299 "Name": "main", 300 "Sharded": false 301 }, 302 "TargetTabletType": "PRIMARY", 303 "MultiShardAutocommit": false, 304 "Query": "delete from unsharded_ref", 305 "Table": "unsharded_ref" 306 }, 307 "TablesUsed": [ 308 "main.unsharded_ref" 309 ] 310 } 311 }, 312 { 313 "comment": "update by primary keyspace id", 314 "query": "update user set val = 1 where id = 1", 315 "v3-plan": { 316 "QueryType": "UPDATE", 317 "Original": "update user set val = 1 where id = 1", 318 "Instructions": { 319 "OperatorType": "Update", 320 "Variant": "Equal", 321 "Keyspace": { 322 "Name": "user", 323 "Sharded": true 324 }, 325 "TargetTabletType": "PRIMARY", 326 "MultiShardAutocommit": false, 327 "Query": "update `user` set val = 1 where id = 1", 328 "Table": "user", 329 "Values": [ 330 "INT64(1)" 331 ], 332 "Vindex": "user_index" 333 }, 334 "TablesUsed": [ 335 "user.user" 336 ] 337 }, 338 "gen4-plan": { 339 "QueryType": "UPDATE", 340 "Original": "update user set val = 1 where id = 1", 341 "Instructions": { 342 "OperatorType": "Update", 343 "Variant": "EqualUnique", 344 "Keyspace": { 345 "Name": "user", 346 "Sharded": true 347 }, 348 "TargetTabletType": "PRIMARY", 349 "MultiShardAutocommit": false, 350 "Query": "update `user` set val = 1 where id = 1", 351 "Table": "user", 352 "Values": [ 353 "INT64(1)" 354 ], 355 "Vindex": "user_index" 356 }, 357 "TablesUsed": [ 358 "user.user" 359 ] 360 } 361 }, 362 { 363 "comment": "update by primary keyspace id with alias", 364 "query": "update user as user_alias set val = 1 where user_alias.id = 1", 365 "v3-plan": { 366 "QueryType": "UPDATE", 367 "Original": "update user as user_alias set val = 1 where user_alias.id = 1", 368 "Instructions": { 369 "OperatorType": "Update", 370 "Variant": "Equal", 371 "Keyspace": { 372 "Name": "user", 373 "Sharded": true 374 }, 375 "TargetTabletType": "PRIMARY", 376 "MultiShardAutocommit": false, 377 "Query": "update `user` as user_alias set val = 1 where user_alias.id = 1", 378 "Table": "user", 379 "Values": [ 380 "INT64(1)" 381 ], 382 "Vindex": "user_index" 383 }, 384 "TablesUsed": [ 385 "user.user" 386 ] 387 }, 388 "gen4-plan": { 389 "QueryType": "UPDATE", 390 "Original": "update user as user_alias set val = 1 where user_alias.id = 1", 391 "Instructions": { 392 "OperatorType": "Update", 393 "Variant": "EqualUnique", 394 "Keyspace": { 395 "Name": "user", 396 "Sharded": true 397 }, 398 "TargetTabletType": "PRIMARY", 399 "MultiShardAutocommit": false, 400 "Query": "update `user` as user_alias set val = 1 where user_alias.id = 1", 401 "Table": "user", 402 "Values": [ 403 "INT64(1)" 404 ], 405 "Vindex": "user_index" 406 }, 407 "TablesUsed": [ 408 "user.user" 409 ] 410 } 411 }, 412 { 413 "comment": "update by primary keyspace id with parenthesized expression", 414 "query": "update user set val = 1 where (id = 1)", 415 "v3-plan": { 416 "QueryType": "UPDATE", 417 "Original": "update user set val = 1 where (id = 1)", 418 "Instructions": { 419 "OperatorType": "Update", 420 "Variant": "Equal", 421 "Keyspace": { 422 "Name": "user", 423 "Sharded": true 424 }, 425 "TargetTabletType": "PRIMARY", 426 "MultiShardAutocommit": false, 427 "Query": "update `user` set val = 1 where id = 1", 428 "Table": "user", 429 "Values": [ 430 "INT64(1)" 431 ], 432 "Vindex": "user_index" 433 }, 434 "TablesUsed": [ 435 "user.user" 436 ] 437 }, 438 "gen4-plan": { 439 "QueryType": "UPDATE", 440 "Original": "update user set val = 1 where (id = 1)", 441 "Instructions": { 442 "OperatorType": "Update", 443 "Variant": "EqualUnique", 444 "Keyspace": { 445 "Name": "user", 446 "Sharded": true 447 }, 448 "TargetTabletType": "PRIMARY", 449 "MultiShardAutocommit": false, 450 "Query": "update `user` set val = 1 where id = 1", 451 "Table": "user", 452 "Values": [ 453 "INT64(1)" 454 ], 455 "Vindex": "user_index" 456 }, 457 "TablesUsed": [ 458 "user.user" 459 ] 460 } 461 }, 462 { 463 "comment": "update by primary keyspace id with multi-part where clause with parens", 464 "query": "update user set val = 1 where (name = 'foo' and id = 1)", 465 "v3-plan": { 466 "QueryType": "UPDATE", 467 "Original": "update user set val = 1 where (name = 'foo' and id = 1)", 468 "Instructions": { 469 "OperatorType": "Update", 470 "Variant": "Equal", 471 "Keyspace": { 472 "Name": "user", 473 "Sharded": true 474 }, 475 "TargetTabletType": "PRIMARY", 476 "MultiShardAutocommit": false, 477 "Query": "update `user` set val = 1 where `name` = 'foo' and id = 1", 478 "Table": "user", 479 "Values": [ 480 "INT64(1)" 481 ], 482 "Vindex": "user_index" 483 }, 484 "TablesUsed": [ 485 "user.user" 486 ] 487 }, 488 "gen4-plan": { 489 "QueryType": "UPDATE", 490 "Original": "update user set val = 1 where (name = 'foo' and id = 1)", 491 "Instructions": { 492 "OperatorType": "Update", 493 "Variant": "EqualUnique", 494 "Keyspace": { 495 "Name": "user", 496 "Sharded": true 497 }, 498 "TargetTabletType": "PRIMARY", 499 "MultiShardAutocommit": false, 500 "Query": "update `user` set val = 1 where `name` = 'foo' and id = 1", 501 "Table": "user", 502 "Values": [ 503 "INT64(1)" 504 ], 505 "Vindex": "user_index" 506 }, 507 "TablesUsed": [ 508 "user.user" 509 ] 510 } 511 }, 512 { 513 "comment": "update by primary keyspace id, changing one vindex column", 514 "query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1", 515 "v3-plan": { 516 "QueryType": "UPDATE", 517 "Original": "update user_metadata set email = 'juan@vitess.io' where user_id = 1", 518 "Instructions": { 519 "OperatorType": "Update", 520 "Variant": "Equal", 521 "Keyspace": { 522 "Name": "user", 523 "Sharded": true 524 }, 525 "TargetTabletType": "PRIMARY", 526 "ChangedVindexValues": [ 527 "email_user_map:3" 528 ], 529 "KsidLength": 1, 530 "KsidVindex": "user_index", 531 "MultiShardAutocommit": false, 532 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io' from user_metadata where user_id = 1 for update", 533 "Query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1", 534 "Table": "user_metadata", 535 "Values": [ 536 "INT64(1)" 537 ], 538 "Vindex": "user_index" 539 }, 540 "TablesUsed": [ 541 "user.user_metadata" 542 ] 543 }, 544 "gen4-plan": { 545 "QueryType": "UPDATE", 546 "Original": "update user_metadata set email = 'juan@vitess.io' where user_id = 1", 547 "Instructions": { 548 "OperatorType": "Update", 549 "Variant": "EqualUnique", 550 "Keyspace": { 551 "Name": "user", 552 "Sharded": true 553 }, 554 "TargetTabletType": "PRIMARY", 555 "ChangedVindexValues": [ 556 "email_user_map:3" 557 ], 558 "KsidLength": 1, 559 "KsidVindex": "user_index", 560 "MultiShardAutocommit": false, 561 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io' from user_metadata where user_id = 1 for update", 562 "Query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1", 563 "Table": "user_metadata", 564 "Values": [ 565 "INT64(1)" 566 ], 567 "Vindex": "user_index" 568 }, 569 "TablesUsed": [ 570 "user.user_metadata" 571 ] 572 } 573 }, 574 { 575 "comment": "update by primary keyspace id, changing same vindex twice", 576 "query": "update user_metadata set email = 'a', email = 'b' where user_id = 1", 577 "plan": "VT03015: column has duplicate set values: 'email'" 578 }, 579 { 580 "comment": "update by primary keyspace id, changing multiple vindex columns", 581 "query": "update user_metadata set email = 'juan@vitess.io', address = '155 5th street' where user_id = 1", 582 "v3-plan": { 583 "QueryType": "UPDATE", 584 "Original": "update user_metadata set email = 'juan@vitess.io', address = '155 5th street' where user_id = 1", 585 "Instructions": { 586 "OperatorType": "Update", 587 "Variant": "Equal", 588 "Keyspace": { 589 "Name": "user", 590 "Sharded": true 591 }, 592 "TargetTabletType": "PRIMARY", 593 "ChangedVindexValues": [ 594 "address_user_map:4", 595 "email_user_map:3" 596 ], 597 "KsidLength": 1, 598 "KsidVindex": "user_index", 599 "MultiShardAutocommit": false, 600 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io', address = '155 5th street' from user_metadata where user_id = 1 for update", 601 "Query": "update user_metadata set email = 'juan@vitess.io', address = '155 5th street' where user_id = 1", 602 "Table": "user_metadata", 603 "Values": [ 604 "INT64(1)" 605 ], 606 "Vindex": "user_index" 607 }, 608 "TablesUsed": [ 609 "user.user_metadata" 610 ] 611 }, 612 "gen4-plan": { 613 "QueryType": "UPDATE", 614 "Original": "update user_metadata set email = 'juan@vitess.io', address = '155 5th street' where user_id = 1", 615 "Instructions": { 616 "OperatorType": "Update", 617 "Variant": "EqualUnique", 618 "Keyspace": { 619 "Name": "user", 620 "Sharded": true 621 }, 622 "TargetTabletType": "PRIMARY", 623 "ChangedVindexValues": [ 624 "address_user_map:4", 625 "email_user_map:3" 626 ], 627 "KsidLength": 1, 628 "KsidVindex": "user_index", 629 "MultiShardAutocommit": false, 630 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io', address = '155 5th street' from user_metadata where user_id = 1 for update", 631 "Query": "update user_metadata set email = 'juan@vitess.io', address = '155 5th street' where user_id = 1", 632 "Table": "user_metadata", 633 "Values": [ 634 "INT64(1)" 635 ], 636 "Vindex": "user_index" 637 }, 638 "TablesUsed": [ 639 "user.user_metadata" 640 ] 641 } 642 }, 643 { 644 "comment": "update by primary keyspace id, changing one vindex column, using order by and limit", 645 "query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1 order by user_id asc limit 10", 646 "v3-plan": { 647 "QueryType": "UPDATE", 648 "Original": "update user_metadata set email = 'juan@vitess.io' where user_id = 1 order by user_id asc limit 10", 649 "Instructions": { 650 "OperatorType": "Update", 651 "Variant": "Equal", 652 "Keyspace": { 653 "Name": "user", 654 "Sharded": true 655 }, 656 "TargetTabletType": "PRIMARY", 657 "ChangedVindexValues": [ 658 "email_user_map:3" 659 ], 660 "KsidLength": 1, 661 "KsidVindex": "user_index", 662 "MultiShardAutocommit": false, 663 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io' from user_metadata where user_id = 1 order by user_id asc limit 10 for update", 664 "Query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1 order by user_id asc limit 10", 665 "Table": "user_metadata", 666 "Values": [ 667 "INT64(1)" 668 ], 669 "Vindex": "user_index" 670 }, 671 "TablesUsed": [ 672 "user.user_metadata" 673 ] 674 }, 675 "gen4-plan": { 676 "QueryType": "UPDATE", 677 "Original": "update user_metadata set email = 'juan@vitess.io' where user_id = 1 order by user_id asc limit 10", 678 "Instructions": { 679 "OperatorType": "Update", 680 "Variant": "EqualUnique", 681 "Keyspace": { 682 "Name": "user", 683 "Sharded": true 684 }, 685 "TargetTabletType": "PRIMARY", 686 "ChangedVindexValues": [ 687 "email_user_map:3" 688 ], 689 "KsidLength": 1, 690 "KsidVindex": "user_index", 691 "MultiShardAutocommit": false, 692 "OwnedVindexQuery": "select user_id, email, address, email = 'juan@vitess.io' from user_metadata where user_id = 1 order by user_id asc limit 10 for update", 693 "Query": "update user_metadata set email = 'juan@vitess.io' where user_id = 1 order by user_id asc limit 10", 694 "Table": "user_metadata", 695 "Values": [ 696 "INT64(1)" 697 ], 698 "Vindex": "user_index" 699 }, 700 "TablesUsed": [ 701 "user.user_metadata" 702 ] 703 } 704 }, 705 { 706 "comment": "update changes non owned vindex column", 707 "query": "update music_extra set music_id = 1 where user_id = 1", 708 "v3-plan": { 709 "QueryType": "UPDATE", 710 "Original": "update music_extra set music_id = 1 where user_id = 1", 711 "Instructions": { 712 "OperatorType": "Update", 713 "Variant": "Equal", 714 "Keyspace": { 715 "Name": "user", 716 "Sharded": true 717 }, 718 "TargetTabletType": "PRIMARY", 719 "ChangedVindexValues": [ 720 "music_user_map:1" 721 ], 722 "KsidLength": 1, 723 "KsidVindex": "user_index", 724 "MultiShardAutocommit": false, 725 "OwnedVindexQuery": "select user_id, music_id = 1 from music_extra where user_id = 1 for update", 726 "Query": "update music_extra set music_id = 1 where user_id = 1", 727 "Table": "music_extra", 728 "Values": [ 729 "INT64(1)" 730 ], 731 "Vindex": "user_index" 732 }, 733 "TablesUsed": [ 734 "user.music_extra" 735 ] 736 }, 737 "gen4-plan": { 738 "QueryType": "UPDATE", 739 "Original": "update music_extra set music_id = 1 where user_id = 1", 740 "Instructions": { 741 "OperatorType": "Update", 742 "Variant": "EqualUnique", 743 "Keyspace": { 744 "Name": "user", 745 "Sharded": true 746 }, 747 "TargetTabletType": "PRIMARY", 748 "ChangedVindexValues": [ 749 "music_user_map:1" 750 ], 751 "KsidLength": 1, 752 "KsidVindex": "user_index", 753 "MultiShardAutocommit": false, 754 "OwnedVindexQuery": "select user_id, music_id = 1 from music_extra where user_id = 1 for update", 755 "Query": "update music_extra set music_id = 1 where user_id = 1", 756 "Table": "music_extra", 757 "Values": [ 758 "INT64(1)" 759 ], 760 "Vindex": "user_index" 761 }, 762 "TablesUsed": [ 763 "user.music_extra" 764 ] 765 } 766 }, 767 { 768 "comment": "update by primary keyspace id, stray where clause", 769 "query": "update user set val = 1 where id = id2 and id = 1", 770 "v3-plan": { 771 "QueryType": "UPDATE", 772 "Original": "update user set val = 1 where id = id2 and id = 1", 773 "Instructions": { 774 "OperatorType": "Update", 775 "Variant": "Equal", 776 "Keyspace": { 777 "Name": "user", 778 "Sharded": true 779 }, 780 "TargetTabletType": "PRIMARY", 781 "MultiShardAutocommit": false, 782 "Query": "update `user` set val = 1 where id = id2 and id = 1", 783 "Table": "user", 784 "Values": [ 785 "INT64(1)" 786 ], 787 "Vindex": "user_index" 788 }, 789 "TablesUsed": [ 790 "user.user" 791 ] 792 }, 793 "gen4-plan": { 794 "QueryType": "UPDATE", 795 "Original": "update user set val = 1 where id = id2 and id = 1", 796 "Instructions": { 797 "OperatorType": "Update", 798 "Variant": "EqualUnique", 799 "Keyspace": { 800 "Name": "user", 801 "Sharded": true 802 }, 803 "TargetTabletType": "PRIMARY", 804 "MultiShardAutocommit": false, 805 "Query": "update `user` set val = 1 where id = id2 and id = 1", 806 "Table": "user", 807 "Values": [ 808 "INT64(1)" 809 ], 810 "Vindex": "user_index" 811 }, 812 "TablesUsed": [ 813 "user.user" 814 ] 815 } 816 }, 817 { 818 "comment": "update by primary keyspace id, stray where clause with conversion error", 819 "query": "update user set val = 1 where id = 18446744073709551616 and id = 1", 820 "v3-plan": { 821 "QueryType": "UPDATE", 822 "Original": "update user set val = 1 where id = 18446744073709551616 and id = 1", 823 "Instructions": { 824 "OperatorType": "Update", 825 "Variant": "Equal", 826 "Keyspace": { 827 "Name": "user", 828 "Sharded": true 829 }, 830 "TargetTabletType": "PRIMARY", 831 "MultiShardAutocommit": false, 832 "Query": "update `user` set val = 1 where id = 18446744073709551616 and id = 1", 833 "Table": "user", 834 "Values": [ 835 "INT64(1)" 836 ], 837 "Vindex": "user_index" 838 }, 839 "TablesUsed": [ 840 "user.user" 841 ] 842 }, 843 "gen4-plan": { 844 "QueryType": "UPDATE", 845 "Original": "update user set val = 1 where id = 18446744073709551616 and id = 1", 846 "Instructions": { 847 "OperatorType": "Update", 848 "Variant": "EqualUnique", 849 "Keyspace": { 850 "Name": "user", 851 "Sharded": true 852 }, 853 "TargetTabletType": "PRIMARY", 854 "MultiShardAutocommit": false, 855 "Query": "update `user` set val = 1 where id = 18446744073709551616 and id = 1", 856 "Table": "user", 857 "Values": [ 858 "INT64(1)" 859 ], 860 "Vindex": "user_index" 861 }, 862 "TablesUsed": [ 863 "user.user" 864 ] 865 } 866 }, 867 { 868 "comment": "delete from by primary keyspace id", 869 "query": "delete from user where id = 1", 870 "v3-plan": { 871 "QueryType": "DELETE", 872 "Original": "delete from user where id = 1", 873 "Instructions": { 874 "OperatorType": "Delete", 875 "Variant": "Equal", 876 "Keyspace": { 877 "Name": "user", 878 "Sharded": true 879 }, 880 "TargetTabletType": "PRIMARY", 881 "KsidLength": 1, 882 "KsidVindex": "user_index", 883 "MultiShardAutocommit": false, 884 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id = 1 for update", 885 "Query": "delete from `user` where id = 1", 886 "Table": "user", 887 "Values": [ 888 "INT64(1)" 889 ], 890 "Vindex": "user_index" 891 }, 892 "TablesUsed": [ 893 "user.user" 894 ] 895 }, 896 "gen4-plan": { 897 "QueryType": "DELETE", 898 "Original": "delete from user where id = 1", 899 "Instructions": { 900 "OperatorType": "Delete", 901 "Variant": "EqualUnique", 902 "Keyspace": { 903 "Name": "user", 904 "Sharded": true 905 }, 906 "TargetTabletType": "PRIMARY", 907 "KsidLength": 1, 908 "KsidVindex": "user_index", 909 "MultiShardAutocommit": false, 910 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id = 1 for update", 911 "Query": "delete from `user` where id = 1", 912 "Table": "user", 913 "Values": [ 914 "INT64(1)" 915 ], 916 "Vindex": "user_index" 917 }, 918 "TablesUsed": [ 919 "user.user" 920 ] 921 } 922 }, 923 { 924 "comment": "multi-table delete with comma join", 925 "query": "delete a from unsharded_a a, unsharded_b b where a.id = b.id and b.val = 1", 926 "plan": { 927 "QueryType": "DELETE", 928 "Original": "delete a from unsharded_a a, unsharded_b b where a.id = b.id and b.val = 1", 929 "Instructions": { 930 "OperatorType": "Delete", 931 "Variant": "Unsharded", 932 "Keyspace": { 933 "Name": "main", 934 "Sharded": false 935 }, 936 "TargetTabletType": "PRIMARY", 937 "MultiShardAutocommit": false, 938 "Query": "delete a from unsharded_a as a, unsharded_b as b where a.id = b.id and b.val = 1", 939 "Table": "unsharded_a, unsharded_b" 940 }, 941 "TablesUsed": [ 942 "main.unsharded_a", 943 "main.unsharded_b" 944 ] 945 } 946 }, 947 { 948 "comment": "multi-table delete with ansi join", 949 "query": "delete a from unsharded_a a join unsharded_b b on a.id = b.id where b.val = 1", 950 "plan": { 951 "QueryType": "DELETE", 952 "Original": "delete a from unsharded_a a join unsharded_b b on a.id = b.id where b.val = 1", 953 "Instructions": { 954 "OperatorType": "Delete", 955 "Variant": "Unsharded", 956 "Keyspace": { 957 "Name": "main", 958 "Sharded": false 959 }, 960 "TargetTabletType": "PRIMARY", 961 "MultiShardAutocommit": false, 962 "Query": "delete a from unsharded_a as a join unsharded_b as b on a.id = b.id where b.val = 1", 963 "Table": "unsharded_a, unsharded_b" 964 }, 965 "TablesUsed": [ 966 "main.unsharded_a", 967 "main.unsharded_b" 968 ] 969 } 970 }, 971 { 972 "comment": "delete with join from subquery", 973 "query": "delete foo from unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 974 "plan": { 975 "QueryType": "DELETE", 976 "Original": "delete foo from unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 977 "Instructions": { 978 "OperatorType": "Delete", 979 "Variant": "Unsharded", 980 "Keyspace": { 981 "Name": "main", 982 "Sharded": false 983 }, 984 "TargetTabletType": "PRIMARY", 985 "MultiShardAutocommit": false, 986 "Query": "delete foo from unsharded as foo left join (select id from unsharded where col is not null order by col desc limit 10) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 987 "Table": "unsharded" 988 }, 989 "TablesUsed": [ 990 "main.unsharded" 991 ] 992 } 993 }, 994 { 995 "comment": "routing rules: deleted from a routed table", 996 "query": "delete from route1 where id = 1", 997 "v3-plan": { 998 "QueryType": "DELETE", 999 "Original": "delete from route1 where id = 1", 1000 "Instructions": { 1001 "OperatorType": "Delete", 1002 "Variant": "Equal", 1003 "Keyspace": { 1004 "Name": "user", 1005 "Sharded": true 1006 }, 1007 "TargetTabletType": "PRIMARY", 1008 "KsidLength": 1, 1009 "KsidVindex": "user_index", 1010 "MultiShardAutocommit": false, 1011 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` as route1 where id = 1 for update", 1012 "Query": "delete from `user` as route1 where id = 1", 1013 "Table": "user", 1014 "Values": [ 1015 "INT64(1)" 1016 ], 1017 "Vindex": "user_index" 1018 }, 1019 "TablesUsed": [ 1020 "user.user" 1021 ] 1022 }, 1023 "gen4-plan": { 1024 "QueryType": "DELETE", 1025 "Original": "delete from route1 where id = 1", 1026 "Instructions": { 1027 "OperatorType": "Delete", 1028 "Variant": "EqualUnique", 1029 "Keyspace": { 1030 "Name": "user", 1031 "Sharded": true 1032 }, 1033 "TargetTabletType": "PRIMARY", 1034 "KsidLength": 1, 1035 "KsidVindex": "user_index", 1036 "MultiShardAutocommit": false, 1037 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` as route1 where id = 1 for update", 1038 "Query": "delete from `user` as route1 where id = 1", 1039 "Table": "user", 1040 "Values": [ 1041 "INT64(1)" 1042 ], 1043 "Vindex": "user_index" 1044 }, 1045 "TablesUsed": [ 1046 "user.user" 1047 ] 1048 } 1049 }, 1050 { 1051 "comment": "delete: routing rules for subquery", 1052 "query": "delete from unsharded_a where a=(select a from route2)", 1053 "v3-plan": { 1054 "QueryType": "DELETE", 1055 "Original": "delete from unsharded_a where a=(select a from route2)", 1056 "Instructions": { 1057 "OperatorType": "Delete", 1058 "Variant": "Unsharded", 1059 "Keyspace": { 1060 "Name": "main", 1061 "Sharded": false 1062 }, 1063 "TargetTabletType": "PRIMARY", 1064 "MultiShardAutocommit": false, 1065 "Query": "delete from unsharded_a where a = (select a from unsharded as route2)", 1066 "Table": "unsharded, unsharded_a" 1067 }, 1068 "TablesUsed": [ 1069 "main.unsharded_a" 1070 ] 1071 }, 1072 "gen4-plan": { 1073 "QueryType": "DELETE", 1074 "Original": "delete from unsharded_a where a=(select a from route2)", 1075 "Instructions": { 1076 "OperatorType": "Delete", 1077 "Variant": "Unsharded", 1078 "Keyspace": { 1079 "Name": "main", 1080 "Sharded": false 1081 }, 1082 "TargetTabletType": "PRIMARY", 1083 "MultiShardAutocommit": false, 1084 "Query": "delete from unsharded_a where a = (select a from unsharded as route2)", 1085 "Table": "unsharded, unsharded_a" 1086 }, 1087 "TablesUsed": [ 1088 "main.unsharded", 1089 "main.unsharded_a" 1090 ] 1091 } 1092 }, 1093 { 1094 "comment": "update by lookup", 1095 "query": "update music set val = 1 where id = 1", 1096 "v3-plan": { 1097 "QueryType": "UPDATE", 1098 "Original": "update music set val = 1 where id = 1", 1099 "Instructions": { 1100 "OperatorType": "Update", 1101 "Variant": "Equal", 1102 "Keyspace": { 1103 "Name": "user", 1104 "Sharded": true 1105 }, 1106 "TargetTabletType": "PRIMARY", 1107 "MultiShardAutocommit": false, 1108 "Query": "update music set val = 1 where id = 1", 1109 "Table": "music", 1110 "Values": [ 1111 "INT64(1)" 1112 ], 1113 "Vindex": "music_user_map" 1114 }, 1115 "TablesUsed": [ 1116 "user.music" 1117 ] 1118 }, 1119 "gen4-plan": { 1120 "QueryType": "UPDATE", 1121 "Original": "update music set val = 1 where id = 1", 1122 "Instructions": { 1123 "OperatorType": "Update", 1124 "Variant": "EqualUnique", 1125 "Keyspace": { 1126 "Name": "user", 1127 "Sharded": true 1128 }, 1129 "TargetTabletType": "PRIMARY", 1130 "MultiShardAutocommit": false, 1131 "Query": "update music set val = 1 where id = 1", 1132 "Table": "music", 1133 "Values": [ 1134 "INT64(1)" 1135 ], 1136 "Vindex": "music_user_map" 1137 }, 1138 "TablesUsed": [ 1139 "user.music" 1140 ] 1141 } 1142 }, 1143 { 1144 "comment": "update multi-table ansi join", 1145 "query": "update unsharded_a a join unsharded_b b on a.id = b.id set a.val = 'foo' where b.val = 1", 1146 "plan": { 1147 "QueryType": "UPDATE", 1148 "Original": "update unsharded_a a join unsharded_b b on a.id = b.id set a.val = 'foo' where b.val = 1", 1149 "Instructions": { 1150 "OperatorType": "Update", 1151 "Variant": "Unsharded", 1152 "Keyspace": { 1153 "Name": "main", 1154 "Sharded": false 1155 }, 1156 "TargetTabletType": "PRIMARY", 1157 "MultiShardAutocommit": false, 1158 "Query": "update unsharded_a as a join unsharded_b as b on a.id = b.id set a.val = 'foo' where b.val = 1", 1159 "Table": "unsharded_a, unsharded_b" 1160 }, 1161 "TablesUsed": [ 1162 "main.unsharded_a", 1163 "main.unsharded_b" 1164 ] 1165 } 1166 }, 1167 { 1168 "comment": "update multi-table comma join", 1169 "query": "update unsharded_a a, unsharded_b b set a.val = 'foo' where a.id = b.id and b.val = 1", 1170 "plan": { 1171 "QueryType": "UPDATE", 1172 "Original": "update unsharded_a a, unsharded_b b set a.val = 'foo' where a.id = b.id and b.val = 1", 1173 "Instructions": { 1174 "OperatorType": "Update", 1175 "Variant": "Unsharded", 1176 "Keyspace": { 1177 "Name": "main", 1178 "Sharded": false 1179 }, 1180 "TargetTabletType": "PRIMARY", 1181 "MultiShardAutocommit": false, 1182 "Query": "update unsharded_a as a, unsharded_b as b set a.val = 'foo' where a.id = b.id and b.val = 1", 1183 "Table": "unsharded_a, unsharded_b" 1184 }, 1185 "TablesUsed": [ 1186 "main.unsharded_a", 1187 "main.unsharded_b" 1188 ] 1189 } 1190 }, 1191 { 1192 "comment": "delete from by lookup", 1193 "query": "delete from music where id = 1", 1194 "v3-plan": { 1195 "QueryType": "DELETE", 1196 "Original": "delete from music where id = 1", 1197 "Instructions": { 1198 "OperatorType": "Delete", 1199 "Variant": "Equal", 1200 "Keyspace": { 1201 "Name": "user", 1202 "Sharded": true 1203 }, 1204 "TargetTabletType": "PRIMARY", 1205 "KsidLength": 1, 1206 "KsidVindex": "user_index", 1207 "MultiShardAutocommit": false, 1208 "OwnedVindexQuery": "select user_id, id from music where id = 1 for update", 1209 "Query": "delete from music where id = 1", 1210 "Table": "music", 1211 "Values": [ 1212 "INT64(1)" 1213 ], 1214 "Vindex": "music_user_map" 1215 }, 1216 "TablesUsed": [ 1217 "user.music" 1218 ] 1219 }, 1220 "gen4-plan": { 1221 "QueryType": "DELETE", 1222 "Original": "delete from music where id = 1", 1223 "Instructions": { 1224 "OperatorType": "Delete", 1225 "Variant": "EqualUnique", 1226 "Keyspace": { 1227 "Name": "user", 1228 "Sharded": true 1229 }, 1230 "TargetTabletType": "PRIMARY", 1231 "KsidLength": 1, 1232 "KsidVindex": "user_index", 1233 "MultiShardAutocommit": false, 1234 "OwnedVindexQuery": "select user_id, id from music where id = 1 for update", 1235 "Query": "delete from music where id = 1", 1236 "Table": "music", 1237 "Values": [ 1238 "INT64(1)" 1239 ], 1240 "Vindex": "music_user_map" 1241 }, 1242 "TablesUsed": [ 1243 "user.music" 1244 ] 1245 } 1246 }, 1247 { 1248 "comment": "delete from, no owned vindexes", 1249 "query": "delete from music_extra where user_id = 1", 1250 "v3-plan": { 1251 "QueryType": "DELETE", 1252 "Original": "delete from music_extra where user_id = 1", 1253 "Instructions": { 1254 "OperatorType": "Delete", 1255 "Variant": "Equal", 1256 "Keyspace": { 1257 "Name": "user", 1258 "Sharded": true 1259 }, 1260 "TargetTabletType": "PRIMARY", 1261 "MultiShardAutocommit": false, 1262 "Query": "delete from music_extra where user_id = 1", 1263 "Table": "music_extra", 1264 "Values": [ 1265 "INT64(1)" 1266 ], 1267 "Vindex": "user_index" 1268 }, 1269 "TablesUsed": [ 1270 "user.music_extra" 1271 ] 1272 }, 1273 "gen4-plan": { 1274 "QueryType": "DELETE", 1275 "Original": "delete from music_extra where user_id = 1", 1276 "Instructions": { 1277 "OperatorType": "Delete", 1278 "Variant": "EqualUnique", 1279 "Keyspace": { 1280 "Name": "user", 1281 "Sharded": true 1282 }, 1283 "TargetTabletType": "PRIMARY", 1284 "MultiShardAutocommit": false, 1285 "Query": "delete from music_extra where user_id = 1", 1286 "Table": "music_extra", 1287 "Values": [ 1288 "INT64(1)" 1289 ], 1290 "Vindex": "user_index" 1291 }, 1292 "TablesUsed": [ 1293 "user.music_extra" 1294 ] 1295 } 1296 }, 1297 { 1298 "comment": "simple insert, no values", 1299 "query": "insert into unsharded values()", 1300 "plan": { 1301 "QueryType": "INSERT", 1302 "Original": "insert into unsharded values()", 1303 "Instructions": { 1304 "OperatorType": "Insert", 1305 "Variant": "Unsharded", 1306 "Keyspace": { 1307 "Name": "main", 1308 "Sharded": false 1309 }, 1310 "TargetTabletType": "PRIMARY", 1311 "MultiShardAutocommit": false, 1312 "Query": "insert into unsharded values ()", 1313 "TableName": "unsharded" 1314 }, 1315 "TablesUsed": [ 1316 "main.unsharded" 1317 ] 1318 } 1319 }, 1320 { 1321 "comment": "simple insert unsharded", 1322 "query": "insert into unsharded values(1, 2)", 1323 "plan": { 1324 "QueryType": "INSERT", 1325 "Original": "insert into unsharded values(1, 2)", 1326 "Instructions": { 1327 "OperatorType": "Insert", 1328 "Variant": "Unsharded", 1329 "Keyspace": { 1330 "Name": "main", 1331 "Sharded": false 1332 }, 1333 "TargetTabletType": "PRIMARY", 1334 "MultiShardAutocommit": false, 1335 "Query": "insert into unsharded values (1, 2)", 1336 "TableName": "unsharded" 1337 }, 1338 "TablesUsed": [ 1339 "main.unsharded" 1340 ] 1341 } 1342 }, 1343 { 1344 "comment": "simple upsert unsharded", 1345 "query": "insert into unsharded values(1, 2) on duplicate key update x = 3", 1346 "plan": { 1347 "QueryType": "INSERT", 1348 "Original": "insert into unsharded values(1, 2) on duplicate key update x = 3", 1349 "Instructions": { 1350 "OperatorType": "Insert", 1351 "Variant": "Unsharded", 1352 "Keyspace": { 1353 "Name": "main", 1354 "Sharded": false 1355 }, 1356 "TargetTabletType": "PRIMARY", 1357 "MultiShardAutocommit": false, 1358 "Query": "insert into unsharded values (1, 2) on duplicate key update x = 3", 1359 "TableName": "unsharded" 1360 }, 1361 "TablesUsed": [ 1362 "main.unsharded" 1363 ] 1364 } 1365 }, 1366 { 1367 "comment": "unsharded insert, no col list with auto-inc and authoritative column list", 1368 "query": "insert into unsharded_authoritative values(1,1)", 1369 "plan": { 1370 "QueryType": "INSERT", 1371 "Original": "insert into unsharded_authoritative values(1,1)", 1372 "Instructions": { 1373 "OperatorType": "Insert", 1374 "Variant": "Unsharded", 1375 "Keyspace": { 1376 "Name": "main", 1377 "Sharded": false 1378 }, 1379 "TargetTabletType": "PRIMARY", 1380 "MultiShardAutocommit": false, 1381 "Query": "insert into unsharded_authoritative(col1, col2) values (:__seq0, 1)", 1382 "TableName": "unsharded_authoritative" 1383 }, 1384 "TablesUsed": [ 1385 "main.unsharded_authoritative" 1386 ] 1387 } 1388 }, 1389 { 1390 "comment": "sharded upsert with sharding key set to vindex column", 1391 "query": "insert into music(user_id, id) values(1, 2) on duplicate key update user_id = values(user_id)", 1392 "plan": { 1393 "QueryType": "INSERT", 1394 "Original": "insert into music(user_id, id) values(1, 2) on duplicate key update user_id = values(user_id)", 1395 "Instructions": { 1396 "OperatorType": "Insert", 1397 "Variant": "Sharded", 1398 "Keyspace": { 1399 "Name": "user", 1400 "Sharded": true 1401 }, 1402 "TargetTabletType": "PRIMARY", 1403 "InsertIgnore": true, 1404 "MultiShardAutocommit": false, 1405 "Query": "insert into music(user_id, id) values (:_user_id_0, :_id_0) on duplicate key update user_id = values(user_id)", 1406 "TableName": "music", 1407 "VindexValues": { 1408 "music_user_map": "INT64(2)", 1409 "user_index": "INT64(1)" 1410 } 1411 }, 1412 "TablesUsed": [ 1413 "user.music" 1414 ] 1415 } 1416 }, 1417 { 1418 "comment": "sharded bulk upsert with sharding key set to vindex column", 1419 "query": "insert into music(user_id, id) values (1, 2), (3,4) on duplicate key update user_id = values(user_id)", 1420 "plan": { 1421 "QueryType": "INSERT", 1422 "Original": "insert into music(user_id, id) values (1, 2), (3,4) on duplicate key update user_id = values(user_id)", 1423 "Instructions": { 1424 "OperatorType": "Insert", 1425 "Variant": "Sharded", 1426 "Keyspace": { 1427 "Name": "user", 1428 "Sharded": true 1429 }, 1430 "TargetTabletType": "PRIMARY", 1431 "InsertIgnore": true, 1432 "MultiShardAutocommit": false, 1433 "Query": "insert into music(user_id, id) values (:_user_id_0, :_id_0), (:_user_id_1, :_id_1) on duplicate key update user_id = values(user_id)", 1434 "TableName": "music", 1435 "VindexValues": { 1436 "music_user_map": "INT64(2), INT64(4)", 1437 "user_index": "INT64(1), INT64(3)" 1438 } 1439 }, 1440 "TablesUsed": [ 1441 "user.music" 1442 ] 1443 } 1444 }, 1445 { 1446 "comment": "insert unsharded with select", 1447 "query": "insert into unsharded select id from unsharded_auto", 1448 "v3-plan": { 1449 "QueryType": "INSERT", 1450 "Original": "insert into unsharded select id from unsharded_auto", 1451 "Instructions": { 1452 "OperatorType": "Insert", 1453 "Variant": "Unsharded", 1454 "Keyspace": { 1455 "Name": "main", 1456 "Sharded": false 1457 }, 1458 "TargetTabletType": "PRIMARY", 1459 "MultiShardAutocommit": false, 1460 "Query": "insert into unsharded select id from unsharded_auto for update", 1461 "TableName": "unsharded" 1462 }, 1463 "TablesUsed": [ 1464 "main.unsharded" 1465 ] 1466 }, 1467 "gen4-plan": { 1468 "QueryType": "INSERT", 1469 "Original": "insert into unsharded select id from unsharded_auto", 1470 "Instructions": { 1471 "OperatorType": "Insert", 1472 "Variant": "Unsharded", 1473 "Keyspace": { 1474 "Name": "main", 1475 "Sharded": false 1476 }, 1477 "TargetTabletType": "PRIMARY", 1478 "MultiShardAutocommit": false, 1479 "Query": "insert into unsharded select id from unsharded_auto for update", 1480 "TableName": "unsharded" 1481 }, 1482 "TablesUsed": [ 1483 "main.unsharded", 1484 "main.unsharded_auto" 1485 ] 1486 } 1487 }, 1488 { 1489 "comment": "insert unsharded with select with join", 1490 "query": "insert into unsharded select id from unsharded join unsharded_auto", 1491 "v3-plan": { 1492 "QueryType": "INSERT", 1493 "Original": "insert into unsharded select id from unsharded join unsharded_auto", 1494 "Instructions": { 1495 "OperatorType": "Insert", 1496 "Variant": "Unsharded", 1497 "Keyspace": { 1498 "Name": "main", 1499 "Sharded": false 1500 }, 1501 "TargetTabletType": "PRIMARY", 1502 "MultiShardAutocommit": false, 1503 "Query": "insert into unsharded select id from unsharded join unsharded_auto for update", 1504 "TableName": "unsharded" 1505 }, 1506 "TablesUsed": [ 1507 "main.unsharded" 1508 ] 1509 }, 1510 "gen4-plan": { 1511 "QueryType": "INSERT", 1512 "Original": "insert into unsharded select id from unsharded join unsharded_auto", 1513 "Instructions": { 1514 "OperatorType": "Insert", 1515 "Variant": "Unsharded", 1516 "Keyspace": { 1517 "Name": "main", 1518 "Sharded": false 1519 }, 1520 "TargetTabletType": "PRIMARY", 1521 "MultiShardAutocommit": false, 1522 "Query": "insert into unsharded select id from unsharded join unsharded_auto for update", 1523 "TableName": "unsharded" 1524 }, 1525 "TablesUsed": [ 1526 "main.unsharded", 1527 "main.unsharded_auto" 1528 ] 1529 } 1530 }, 1531 { 1532 "comment": "insert unsharded, invalid value for auto-inc", 1533 "query": "insert into unsharded_auto(id, val) values(18446744073709551616, 'aa')", 1534 "plan": { 1535 "QueryType": "INSERT", 1536 "Original": "insert into unsharded_auto(id, val) values(18446744073709551616, 'aa')", 1537 "Instructions": { 1538 "OperatorType": "Insert", 1539 "Variant": "Unsharded", 1540 "Keyspace": { 1541 "Name": "main", 1542 "Sharded": false 1543 }, 1544 "TargetTabletType": "PRIMARY", 1545 "MultiShardAutocommit": false, 1546 "Query": "insert into unsharded_auto(id, val) values (:__seq0, 'aa')", 1547 "TableName": "unsharded_auto" 1548 }, 1549 "TablesUsed": [ 1550 "main.unsharded_auto" 1551 ] 1552 } 1553 }, 1554 { 1555 "comment": "insert unsharded, column present", 1556 "query": "insert into unsharded_auto(id, val) values(1, 'aa')", 1557 "plan": { 1558 "QueryType": "INSERT", 1559 "Original": "insert into unsharded_auto(id, val) values(1, 'aa')", 1560 "Instructions": { 1561 "OperatorType": "Insert", 1562 "Variant": "Unsharded", 1563 "Keyspace": { 1564 "Name": "main", 1565 "Sharded": false 1566 }, 1567 "TargetTabletType": "PRIMARY", 1568 "MultiShardAutocommit": false, 1569 "Query": "insert into unsharded_auto(id, val) values (:__seq0, 'aa')", 1570 "TableName": "unsharded_auto" 1571 }, 1572 "TablesUsed": [ 1573 "main.unsharded_auto" 1574 ] 1575 } 1576 }, 1577 { 1578 "comment": "insert unsharded, column absent", 1579 "query": "insert into unsharded_auto(val) values('aa')", 1580 "plan": { 1581 "QueryType": "INSERT", 1582 "Original": "insert into unsharded_auto(val) values('aa')", 1583 "Instructions": { 1584 "OperatorType": "Insert", 1585 "Variant": "Unsharded", 1586 "Keyspace": { 1587 "Name": "main", 1588 "Sharded": false 1589 }, 1590 "TargetTabletType": "PRIMARY", 1591 "MultiShardAutocommit": false, 1592 "Query": "insert into unsharded_auto(val, id) values ('aa', :__seq0)", 1593 "TableName": "unsharded_auto" 1594 }, 1595 "TablesUsed": [ 1596 "main.unsharded_auto" 1597 ] 1598 } 1599 }, 1600 { 1601 "comment": "insert unsharded, column absent", 1602 "query": "insert into unsharded_auto(val) values(false)", 1603 "plan": { 1604 "QueryType": "INSERT", 1605 "Original": "insert into unsharded_auto(val) values(false)", 1606 "Instructions": { 1607 "OperatorType": "Insert", 1608 "Variant": "Unsharded", 1609 "Keyspace": { 1610 "Name": "main", 1611 "Sharded": false 1612 }, 1613 "TargetTabletType": "PRIMARY", 1614 "MultiShardAutocommit": false, 1615 "Query": "insert into unsharded_auto(val, id) values (false, :__seq0)", 1616 "TableName": "unsharded_auto" 1617 }, 1618 "TablesUsed": [ 1619 "main.unsharded_auto" 1620 ] 1621 } 1622 }, 1623 { 1624 "comment": "insert unsharded, multi-val", 1625 "query": "insert into unsharded_auto(id, val) values(1, 'aa'), (null, 'bb')", 1626 "plan": { 1627 "QueryType": "INSERT", 1628 "Original": "insert into unsharded_auto(id, val) values(1, 'aa'), (null, 'bb')", 1629 "Instructions": { 1630 "OperatorType": "Insert", 1631 "Variant": "Unsharded", 1632 "Keyspace": { 1633 "Name": "main", 1634 "Sharded": false 1635 }, 1636 "TargetTabletType": "PRIMARY", 1637 "MultiShardAutocommit": false, 1638 "Query": "insert into unsharded_auto(id, val) values (:__seq0, 'aa'), (:__seq1, 'bb')", 1639 "TableName": "unsharded_auto" 1640 }, 1641 "TablesUsed": [ 1642 "main.unsharded_auto" 1643 ] 1644 } 1645 }, 1646 { 1647 "comment": "unsharded insert subquery in insert value", 1648 "query": "insert into unsharded values((select 1 from dual), 1)", 1649 "plan": { 1650 "QueryType": "INSERT", 1651 "Original": "insert into unsharded values((select 1 from dual), 1)", 1652 "Instructions": { 1653 "OperatorType": "Insert", 1654 "Variant": "Unsharded", 1655 "Keyspace": { 1656 "Name": "main", 1657 "Sharded": false 1658 }, 1659 "TargetTabletType": "PRIMARY", 1660 "MultiShardAutocommit": false, 1661 "Query": "insert into unsharded values (1, 1)", 1662 "TableName": "unsharded" 1663 }, 1664 "TablesUsed": [ 1665 "main.unsharded" 1666 ] 1667 } 1668 }, 1669 { 1670 "comment": "sharded insert subquery in insert value", 1671 "query": "insert into user(id, val) values((select 1), 1)", 1672 "plan": { 1673 "QueryType": "INSERT", 1674 "Original": "insert into user(id, val) values((select 1), 1)", 1675 "Instructions": { 1676 "OperatorType": "Insert", 1677 "Variant": "Sharded", 1678 "Keyspace": { 1679 "Name": "user", 1680 "Sharded": true 1681 }, 1682 "TargetTabletType": "PRIMARY", 1683 "MultiShardAutocommit": false, 1684 "Query": "insert into `user`(id, val, `Name`, Costly) values (:_Id_0, 1, :_Name_0, :_Costly_0)", 1685 "TableName": "user", 1686 "VindexValues": { 1687 "costly_map": "NULL", 1688 "name_user_map": "NULL", 1689 "user_index": ":__seq0" 1690 } 1691 }, 1692 "TablesUsed": [ 1693 "user.user" 1694 ] 1695 } 1696 }, 1697 { 1698 "comment": "insert into a routed table", 1699 "query": "insert into route1(id) values (1)", 1700 "plan": { 1701 "QueryType": "INSERT", 1702 "Original": "insert into route1(id) values (1)", 1703 "Instructions": { 1704 "OperatorType": "Insert", 1705 "Variant": "Sharded", 1706 "Keyspace": { 1707 "Name": "user", 1708 "Sharded": true 1709 }, 1710 "TargetTabletType": "PRIMARY", 1711 "MultiShardAutocommit": false, 1712 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", 1713 "TableName": "user", 1714 "VindexValues": { 1715 "costly_map": "NULL", 1716 "name_user_map": "NULL", 1717 "user_index": ":__seq0" 1718 } 1719 }, 1720 "TablesUsed": [ 1721 "user.user" 1722 ] 1723 } 1724 }, 1725 { 1726 "comment": "insert with mimatched column list", 1727 "query": "insert into user(id) values (1, 2)", 1728 "plan": "VT13001: [BUG] column list does not match values" 1729 }, 1730 { 1731 "comment": "insert no column list for sharded authoritative table", 1732 "query": "insert into authoritative values(1, 2, 3)", 1733 "plan": { 1734 "QueryType": "INSERT", 1735 "Original": "insert into authoritative values(1, 2, 3)", 1736 "Instructions": { 1737 "OperatorType": "Insert", 1738 "Variant": "Sharded", 1739 "Keyspace": { 1740 "Name": "user", 1741 "Sharded": true 1742 }, 1743 "TargetTabletType": "PRIMARY", 1744 "MultiShardAutocommit": false, 1745 "Query": "insert into authoritative(user_id, col1, col2) values (:_user_id_0, 2, 3)", 1746 "TableName": "authoritative", 1747 "VindexValues": { 1748 "user_index": "INT64(1)" 1749 } 1750 }, 1751 "TablesUsed": [ 1752 "user.authoritative" 1753 ] 1754 } 1755 }, 1756 { 1757 "comment": "insert sharded, no values", 1758 "query": "insert into user values()", 1759 "plan": { 1760 "QueryType": "INSERT", 1761 "Original": "insert into user values()", 1762 "Instructions": { 1763 "OperatorType": "Insert", 1764 "Variant": "Sharded", 1765 "Keyspace": { 1766 "Name": "user", 1767 "Sharded": true 1768 }, 1769 "TargetTabletType": "PRIMARY", 1770 "MultiShardAutocommit": false, 1771 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", 1772 "TableName": "user", 1773 "VindexValues": { 1774 "costly_map": "NULL", 1775 "name_user_map": "NULL", 1776 "user_index": ":__seq0" 1777 } 1778 }, 1779 "TablesUsed": [ 1780 "user.user" 1781 ] 1782 } 1783 }, 1784 { 1785 "comment": "insert with one vindex", 1786 "query": "insert into user(id) values (1)", 1787 "plan": { 1788 "QueryType": "INSERT", 1789 "Original": "insert into user(id) values (1)", 1790 "Instructions": { 1791 "OperatorType": "Insert", 1792 "Variant": "Sharded", 1793 "Keyspace": { 1794 "Name": "user", 1795 "Sharded": true 1796 }, 1797 "TargetTabletType": "PRIMARY", 1798 "MultiShardAutocommit": false, 1799 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", 1800 "TableName": "user", 1801 "VindexValues": { 1802 "costly_map": "NULL", 1803 "name_user_map": "NULL", 1804 "user_index": ":__seq0" 1805 } 1806 }, 1807 "TablesUsed": [ 1808 "user.user" 1809 ] 1810 } 1811 }, 1812 { 1813 "comment": "insert ignore sharded", 1814 "query": "insert ignore into user(id) values (1)", 1815 "plan": { 1816 "QueryType": "INSERT", 1817 "Original": "insert ignore into user(id) values (1)", 1818 "Instructions": { 1819 "OperatorType": "Insert", 1820 "Variant": "Sharded", 1821 "Keyspace": { 1822 "Name": "user", 1823 "Sharded": true 1824 }, 1825 "TargetTabletType": "PRIMARY", 1826 "InsertIgnore": true, 1827 "MultiShardAutocommit": false, 1828 "Query": "insert ignore into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", 1829 "TableName": "user", 1830 "VindexValues": { 1831 "costly_map": "NULL", 1832 "name_user_map": "NULL", 1833 "user_index": ":__seq0" 1834 } 1835 }, 1836 "TablesUsed": [ 1837 "user.user" 1838 ] 1839 } 1840 }, 1841 { 1842 "comment": "insert on duplicate key", 1843 "query": "insert into user(id) values(1) on duplicate key update col = 2", 1844 "plan": { 1845 "QueryType": "INSERT", 1846 "Original": "insert into user(id) values(1) on duplicate key update col = 2", 1847 "Instructions": { 1848 "OperatorType": "Insert", 1849 "Variant": "Sharded", 1850 "Keyspace": { 1851 "Name": "user", 1852 "Sharded": true 1853 }, 1854 "TargetTabletType": "PRIMARY", 1855 "InsertIgnore": true, 1856 "MultiShardAutocommit": false, 1857 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0) on duplicate key update col = 2", 1858 "TableName": "user", 1859 "VindexValues": { 1860 "costly_map": "NULL", 1861 "name_user_map": "NULL", 1862 "user_index": ":__seq0" 1863 } 1864 }, 1865 "TablesUsed": [ 1866 "user.user" 1867 ] 1868 } 1869 }, 1870 { 1871 "comment": "insert with one vindex and bind var", 1872 "query": "insert into user(id) values (:aa)", 1873 "plan": { 1874 "QueryType": "INSERT", 1875 "Original": "insert into user(id) values (:aa)", 1876 "Instructions": { 1877 "OperatorType": "Insert", 1878 "Variant": "Sharded", 1879 "Keyspace": { 1880 "Name": "user", 1881 "Sharded": true 1882 }, 1883 "TargetTabletType": "PRIMARY", 1884 "MultiShardAutocommit": false, 1885 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0)", 1886 "TableName": "user", 1887 "VindexValues": { 1888 "costly_map": "NULL", 1889 "name_user_map": "NULL", 1890 "user_index": ":__seq0" 1891 } 1892 }, 1893 "TablesUsed": [ 1894 "user.user" 1895 ] 1896 } 1897 }, 1898 { 1899 "comment": "insert with non vindex", 1900 "query": "insert into user(nonid) values (2)", 1901 "plan": { 1902 "QueryType": "INSERT", 1903 "Original": "insert into user(nonid) values (2)", 1904 "Instructions": { 1905 "OperatorType": "Insert", 1906 "Variant": "Sharded", 1907 "Keyspace": { 1908 "Name": "user", 1909 "Sharded": true 1910 }, 1911 "TargetTabletType": "PRIMARY", 1912 "MultiShardAutocommit": false, 1913 "Query": "insert into `user`(nonid, id, `Name`, Costly) values (2, :_Id_0, :_Name_0, :_Costly_0)", 1914 "TableName": "user", 1915 "VindexValues": { 1916 "costly_map": "NULL", 1917 "name_user_map": "NULL", 1918 "user_index": ":__seq0" 1919 } 1920 }, 1921 "TablesUsed": [ 1922 "user.user" 1923 ] 1924 } 1925 }, 1926 { 1927 "comment": "insert with default seq", 1928 "query": "insert into user(id, nonid) values (default, 2)", 1929 "plan": { 1930 "QueryType": "INSERT", 1931 "Original": "insert into user(id, nonid) values (default, 2)", 1932 "Instructions": { 1933 "OperatorType": "Insert", 1934 "Variant": "Sharded", 1935 "Keyspace": { 1936 "Name": "user", 1937 "Sharded": true 1938 }, 1939 "TargetTabletType": "PRIMARY", 1940 "MultiShardAutocommit": false, 1941 "Query": "insert into `user`(id, nonid, `Name`, Costly) values (:_Id_0, 2, :_Name_0, :_Costly_0)", 1942 "TableName": "user", 1943 "VindexValues": { 1944 "costly_map": "NULL", 1945 "name_user_map": "NULL", 1946 "user_index": ":__seq0" 1947 } 1948 }, 1949 "TablesUsed": [ 1950 "user.user" 1951 ] 1952 } 1953 }, 1954 { 1955 "comment": "insert with non vindex bool value", 1956 "query": "insert into user(nonid) values (true)", 1957 "plan": { 1958 "QueryType": "INSERT", 1959 "Original": "insert into user(nonid) values (true)", 1960 "Instructions": { 1961 "OperatorType": "Insert", 1962 "Variant": "Sharded", 1963 "Keyspace": { 1964 "Name": "user", 1965 "Sharded": true 1966 }, 1967 "TargetTabletType": "PRIMARY", 1968 "MultiShardAutocommit": false, 1969 "Query": "insert into `user`(nonid, id, `Name`, Costly) values (true, :_Id_0, :_Name_0, :_Costly_0)", 1970 "TableName": "user", 1971 "VindexValues": { 1972 "costly_map": "NULL", 1973 "name_user_map": "NULL", 1974 "user_index": ":__seq0" 1975 } 1976 }, 1977 "TablesUsed": [ 1978 "user.user" 1979 ] 1980 } 1981 }, 1982 { 1983 "comment": "insert with all vindexes supplied", 1984 "query": "insert into user(nonid, name, id) values (2, 'foo', 1)", 1985 "plan": { 1986 "QueryType": "INSERT", 1987 "Original": "insert into user(nonid, name, id) values (2, 'foo', 1)", 1988 "Instructions": { 1989 "OperatorType": "Insert", 1990 "Variant": "Sharded", 1991 "Keyspace": { 1992 "Name": "user", 1993 "Sharded": true 1994 }, 1995 "TargetTabletType": "PRIMARY", 1996 "MultiShardAutocommit": false, 1997 "Query": "insert into `user`(nonid, `name`, id, Costly) values (2, :_Name_0, :_Id_0, :_Costly_0)", 1998 "TableName": "user", 1999 "VindexValues": { 2000 "costly_map": "NULL", 2001 "name_user_map": "VARCHAR(\"foo\")", 2002 "user_index": ":__seq0" 2003 } 2004 }, 2005 "TablesUsed": [ 2006 "user.user" 2007 ] 2008 } 2009 }, 2010 { 2011 "comment": "insert for non-vindex autoinc", 2012 "query": "insert into user_extra(nonid) values (2)", 2013 "plan": { 2014 "QueryType": "INSERT", 2015 "Original": "insert into user_extra(nonid) values (2)", 2016 "Instructions": { 2017 "OperatorType": "Insert", 2018 "Variant": "Sharded", 2019 "Keyspace": { 2020 "Name": "user", 2021 "Sharded": true 2022 }, 2023 "TargetTabletType": "PRIMARY", 2024 "MultiShardAutocommit": false, 2025 "Query": "insert into user_extra(nonid, extra_id, user_id) values (2, :__seq0, :_user_id_0)", 2026 "TableName": "user_extra", 2027 "VindexValues": { 2028 "user_index": "NULL" 2029 } 2030 }, 2031 "TablesUsed": [ 2032 "user.user_extra" 2033 ] 2034 } 2035 }, 2036 { 2037 "comment": "insert for non-compliant names", 2038 "query": "insert into `weird``name`(`a``b*c`, `b*c`) values(1, 2)", 2039 "plan": { 2040 "QueryType": "INSERT", 2041 "Original": "insert into `weird``name`(`a``b*c`, `b*c`) values(1, 2)", 2042 "Instructions": { 2043 "OperatorType": "Insert", 2044 "Variant": "Sharded", 2045 "Keyspace": { 2046 "Name": "user", 2047 "Sharded": true 2048 }, 2049 "TargetTabletType": "PRIMARY", 2050 "MultiShardAutocommit": false, 2051 "Query": "insert into `weird``name`(`a``b*c`, `b*c`) values (:_a_b_c_0, 2)", 2052 "TableName": "weird`name", 2053 "VindexValues": { 2054 "user_index": "INT64(1)" 2055 } 2056 }, 2057 "TablesUsed": [ 2058 "user.weird`name" 2059 ] 2060 } 2061 }, 2062 { 2063 "comment": "unsharded insert from union", 2064 "query": "insert into unsharded select 1 from dual union select 1 from dual", 2065 "v3-plan": { 2066 "QueryType": "INSERT", 2067 "Original": "insert into unsharded select 1 from dual union select 1 from dual", 2068 "Instructions": { 2069 "OperatorType": "Insert", 2070 "Variant": "Unsharded", 2071 "Keyspace": { 2072 "Name": "main", 2073 "Sharded": false 2074 }, 2075 "TargetTabletType": "PRIMARY", 2076 "MultiShardAutocommit": false, 2077 "Query": "insert into unsharded select 1 from dual union select 1 from dual for update", 2078 "TableName": "unsharded" 2079 }, 2080 "TablesUsed": [ 2081 "main.unsharded" 2082 ] 2083 }, 2084 "gen4-plan": { 2085 "QueryType": "INSERT", 2086 "Original": "insert into unsharded select 1 from dual union select 1 from dual", 2087 "Instructions": { 2088 "OperatorType": "Insert", 2089 "Variant": "Unsharded", 2090 "Keyspace": { 2091 "Name": "main", 2092 "Sharded": false 2093 }, 2094 "TargetTabletType": "PRIMARY", 2095 "MultiShardAutocommit": false, 2096 "Query": "insert into unsharded select 1 from dual union select 1 from dual for update", 2097 "TableName": "unsharded" 2098 }, 2099 "TablesUsed": [ 2100 "main.dual", 2101 "main.unsharded" 2102 ] 2103 } 2104 }, 2105 { 2106 "comment": "insert for non-vindex autoinc, invalid value", 2107 "query": "insert into user_extra(nonid, extra_id) values (2, 18446744073709551616)", 2108 "plan": { 2109 "QueryType": "INSERT", 2110 "Original": "insert into user_extra(nonid, extra_id) values (2, 18446744073709551616)", 2111 "Instructions": { 2112 "OperatorType": "Insert", 2113 "Variant": "Sharded", 2114 "Keyspace": { 2115 "Name": "user", 2116 "Sharded": true 2117 }, 2118 "TargetTabletType": "PRIMARY", 2119 "MultiShardAutocommit": false, 2120 "Query": "insert into user_extra(nonid, extra_id, user_id) values (2, :__seq0, :_user_id_0)", 2121 "TableName": "user_extra", 2122 "VindexValues": { 2123 "user_index": "NULL" 2124 } 2125 }, 2126 "TablesUsed": [ 2127 "user.user_extra" 2128 ] 2129 } 2130 }, 2131 { 2132 "comment": "insert invalid index value", 2133 "query": "insert into music_extra(music_id, user_id) values(1, 18446744073709551616)", 2134 "plan": { 2135 "QueryType": "INSERT", 2136 "Original": "insert into music_extra(music_id, user_id) values(1, 18446744073709551616)", 2137 "Instructions": { 2138 "OperatorType": "Insert", 2139 "Variant": "Sharded", 2140 "Keyspace": { 2141 "Name": "user", 2142 "Sharded": true 2143 }, 2144 "TargetTabletType": "PRIMARY", 2145 "MultiShardAutocommit": false, 2146 "Query": "insert into music_extra(music_id, user_id) values (:_music_id_0, :_user_id_0)", 2147 "TableName": "music_extra", 2148 "VindexValues": { 2149 "music_user_map": "INT64(1)", 2150 "user_index": "DECIMAL(18446744073709551616)" 2151 } 2152 }, 2153 "TablesUsed": [ 2154 "user.music_extra" 2155 ] 2156 } 2157 }, 2158 { 2159 "comment": "insert invalid index value", 2160 "query": "insert into music_extra(music_id, user_id) values(1, id)", 2161 "plan": "column access not supported here" 2162 }, 2163 { 2164 "comment": "insert invalid table", 2165 "query": "insert into noexist(music_id, user_id) values(1, 18446744073709551616)", 2166 "plan": "table noexist not found" 2167 }, 2168 { 2169 "comment": "insert with multiple rows", 2170 "query": "insert into user(id) values (1), (2)", 2171 "plan": { 2172 "QueryType": "INSERT", 2173 "Original": "insert into user(id) values (1), (2)", 2174 "Instructions": { 2175 "OperatorType": "Insert", 2176 "Variant": "Sharded", 2177 "Keyspace": { 2178 "Name": "user", 2179 "Sharded": true 2180 }, 2181 "TargetTabletType": "PRIMARY", 2182 "MultiShardAutocommit": false, 2183 "Query": "insert into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", 2184 "TableName": "user", 2185 "VindexValues": { 2186 "costly_map": "NULL, NULL", 2187 "name_user_map": "NULL, NULL", 2188 "user_index": ":__seq0, :__seq1" 2189 } 2190 }, 2191 "TablesUsed": [ 2192 "user.user" 2193 ] 2194 } 2195 }, 2196 { 2197 "comment": "insert with query timeout", 2198 "query": "insert /*vt+ QUERY_TIMEOUT_MS=1 */ into user(id) values (1), (2)", 2199 "plan": { 2200 "QueryType": "INSERT", 2201 "Original": "insert /*vt+ QUERY_TIMEOUT_MS=1 */ into user(id) values (1), (2)", 2202 "Instructions": { 2203 "OperatorType": "Insert", 2204 "Variant": "Sharded", 2205 "Keyspace": { 2206 "Name": "user", 2207 "Sharded": true 2208 }, 2209 "TargetTabletType": "PRIMARY", 2210 "MultiShardAutocommit": false, 2211 "Query": "insert /*vt+ QUERY_TIMEOUT_MS=1 */ into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", 2212 "QueryTimeout": 1, 2213 "TableName": "user", 2214 "VindexValues": { 2215 "costly_map": "NULL, NULL", 2216 "name_user_map": "NULL, NULL", 2217 "user_index": ":__seq0, :__seq1" 2218 } 2219 }, 2220 "TablesUsed": [ 2221 "user.user" 2222 ] 2223 } 2224 }, 2225 { 2226 "comment": "insert with multiple rows - multi-shard autocommit", 2227 "query": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id) values (1), (2)", 2228 "plan": { 2229 "QueryType": "INSERT", 2230 "Original": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into user(id) values (1), (2)", 2231 "Instructions": { 2232 "OperatorType": "Insert", 2233 "Variant": "Sharded", 2234 "Keyspace": { 2235 "Name": "user", 2236 "Sharded": true 2237 }, 2238 "TargetTabletType": "PRIMARY", 2239 "MultiShardAutocommit": true, 2240 "Query": "insert /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ into `user`(id, `Name`, Costly) values (:_Id_0, :_Name_0, :_Costly_0), (:_Id_1, :_Name_1, :_Costly_1)", 2241 "TableName": "user", 2242 "VindexValues": { 2243 "costly_map": "NULL, NULL", 2244 "name_user_map": "NULL, NULL", 2245 "user_index": ":__seq0, :__seq1" 2246 } 2247 }, 2248 "TablesUsed": [ 2249 "user.user" 2250 ] 2251 } 2252 }, 2253 { 2254 "comment": "insert into a vindex not allowed", 2255 "query": "insert into user_index(id) values(1)", 2256 "plan": "VT12001: unsupported: multi-shard or vindex write statement" 2257 }, 2258 { 2259 "comment": "simple replace unsharded", 2260 "query": "replace into unsharded values(1, 2)", 2261 "plan": { 2262 "QueryType": "INSERT", 2263 "Original": "replace into unsharded values(1, 2)", 2264 "Instructions": { 2265 "OperatorType": "Insert", 2266 "Variant": "Unsharded", 2267 "Keyspace": { 2268 "Name": "main", 2269 "Sharded": false 2270 }, 2271 "TargetTabletType": "PRIMARY", 2272 "MultiShardAutocommit": false, 2273 "Query": "replace into unsharded values (1, 2)", 2274 "TableName": "unsharded" 2275 }, 2276 "TablesUsed": [ 2277 "main.unsharded" 2278 ] 2279 } 2280 }, 2281 { 2282 "comment": "replace unsharded with select", 2283 "query": "replace into unsharded select id from unsharded_auto", 2284 "v3-plan": { 2285 "QueryType": "INSERT", 2286 "Original": "replace into unsharded select id from unsharded_auto", 2287 "Instructions": { 2288 "OperatorType": "Insert", 2289 "Variant": "Unsharded", 2290 "Keyspace": { 2291 "Name": "main", 2292 "Sharded": false 2293 }, 2294 "TargetTabletType": "PRIMARY", 2295 "MultiShardAutocommit": false, 2296 "Query": "replace into unsharded select id from unsharded_auto for update", 2297 "TableName": "unsharded" 2298 }, 2299 "TablesUsed": [ 2300 "main.unsharded" 2301 ] 2302 }, 2303 "gen4-plan": { 2304 "QueryType": "INSERT", 2305 "Original": "replace into unsharded select id from unsharded_auto", 2306 "Instructions": { 2307 "OperatorType": "Insert", 2308 "Variant": "Unsharded", 2309 "Keyspace": { 2310 "Name": "main", 2311 "Sharded": false 2312 }, 2313 "TargetTabletType": "PRIMARY", 2314 "MultiShardAutocommit": false, 2315 "Query": "replace into unsharded select id from unsharded_auto for update", 2316 "TableName": "unsharded" 2317 }, 2318 "TablesUsed": [ 2319 "main.unsharded", 2320 "main.unsharded_auto" 2321 ] 2322 } 2323 }, 2324 { 2325 "comment": "replace unsharded, invalid value for auto-inc", 2326 "query": "replace into unsharded_auto(id, val) values(18446744073709551616, 'aa')", 2327 "plan": { 2328 "QueryType": "INSERT", 2329 "Original": "replace into unsharded_auto(id, val) values(18446744073709551616, 'aa')", 2330 "Instructions": { 2331 "OperatorType": "Insert", 2332 "Variant": "Unsharded", 2333 "Keyspace": { 2334 "Name": "main", 2335 "Sharded": false 2336 }, 2337 "TargetTabletType": "PRIMARY", 2338 "MultiShardAutocommit": false, 2339 "Query": "replace into unsharded_auto(id, val) values (:__seq0, 'aa')", 2340 "TableName": "unsharded_auto" 2341 }, 2342 "TablesUsed": [ 2343 "main.unsharded_auto" 2344 ] 2345 } 2346 }, 2347 { 2348 "comment": "replace unsharded, column present", 2349 "query": "replace into unsharded_auto(id, val) values(1, 'aa')", 2350 "plan": { 2351 "QueryType": "INSERT", 2352 "Original": "replace into unsharded_auto(id, val) values(1, 'aa')", 2353 "Instructions": { 2354 "OperatorType": "Insert", 2355 "Variant": "Unsharded", 2356 "Keyspace": { 2357 "Name": "main", 2358 "Sharded": false 2359 }, 2360 "TargetTabletType": "PRIMARY", 2361 "MultiShardAutocommit": false, 2362 "Query": "replace into unsharded_auto(id, val) values (:__seq0, 'aa')", 2363 "TableName": "unsharded_auto" 2364 }, 2365 "TablesUsed": [ 2366 "main.unsharded_auto" 2367 ] 2368 } 2369 }, 2370 { 2371 "comment": "replace unsharded, column absent", 2372 "query": "replace into unsharded_auto(val) values('aa')", 2373 "plan": { 2374 "QueryType": "INSERT", 2375 "Original": "replace into unsharded_auto(val) values('aa')", 2376 "Instructions": { 2377 "OperatorType": "Insert", 2378 "Variant": "Unsharded", 2379 "Keyspace": { 2380 "Name": "main", 2381 "Sharded": false 2382 }, 2383 "TargetTabletType": "PRIMARY", 2384 "MultiShardAutocommit": false, 2385 "Query": "replace into unsharded_auto(val, id) values ('aa', :__seq0)", 2386 "TableName": "unsharded_auto" 2387 }, 2388 "TablesUsed": [ 2389 "main.unsharded_auto" 2390 ] 2391 } 2392 }, 2393 { 2394 "comment": "replace unsharded, multi-val", 2395 "query": "replace into unsharded_auto(id, val) values(1, 'aa'), (null, 'bb')", 2396 "plan": { 2397 "QueryType": "INSERT", 2398 "Original": "replace into unsharded_auto(id, val) values(1, 'aa'), (null, 'bb')", 2399 "Instructions": { 2400 "OperatorType": "Insert", 2401 "Variant": "Unsharded", 2402 "Keyspace": { 2403 "Name": "main", 2404 "Sharded": false 2405 }, 2406 "TargetTabletType": "PRIMARY", 2407 "MultiShardAutocommit": false, 2408 "Query": "replace into unsharded_auto(id, val) values (:__seq0, 'aa'), (:__seq1, 'bb')", 2409 "TableName": "unsharded_auto" 2410 }, 2411 "TablesUsed": [ 2412 "main.unsharded_auto" 2413 ] 2414 } 2415 }, 2416 { 2417 "comment": "replace invalid table", 2418 "query": "replace into noexist(music_id, user_id) values(1, 18446744073709551616)", 2419 "plan": "table noexist not found" 2420 }, 2421 { 2422 "comment": "insert a row in a multi column vindex table", 2423 "query": "insert multicolvin (column_a, column_b, column_c, kid) VALUES (1,2,3,4)", 2424 "plan": { 2425 "QueryType": "INSERT", 2426 "Original": "insert multicolvin (column_a, column_b, column_c, kid) VALUES (1,2,3,4)", 2427 "Instructions": { 2428 "OperatorType": "Insert", 2429 "Variant": "Sharded", 2430 "Keyspace": { 2431 "Name": "user", 2432 "Sharded": true 2433 }, 2434 "TargetTabletType": "PRIMARY", 2435 "MultiShardAutocommit": false, 2436 "Query": "insert into multicolvin(column_a, column_b, column_c, kid) values (:_column_a_0, :_column_b_0, :_column_c_0, :_kid_0)", 2437 "TableName": "multicolvin", 2438 "VindexValues": { 2439 "cola_map": "INT64(1)", 2440 "colb_colc_map": "INT64(2), INT64(3)", 2441 "kid_index": "INT64(4)" 2442 } 2443 }, 2444 "TablesUsed": [ 2445 "user.multicolvin" 2446 ] 2447 } 2448 }, 2449 { 2450 "comment": "insert for overlapped vindex columns", 2451 "query": "insert overlap_vindex (kid, column_a, column_b) VALUES (1,2,3)", 2452 "plan": { 2453 "QueryType": "INSERT", 2454 "Original": "insert overlap_vindex (kid, column_a, column_b) VALUES (1,2,3)", 2455 "Instructions": { 2456 "OperatorType": "Insert", 2457 "Variant": "Sharded", 2458 "Keyspace": { 2459 "Name": "user", 2460 "Sharded": true 2461 }, 2462 "TargetTabletType": "PRIMARY", 2463 "MultiShardAutocommit": false, 2464 "Query": "insert into overlap_vindex(kid, column_a, column_b) values (:_kid_0, :_column_a_0, 3)", 2465 "TableName": "overlap_vindex", 2466 "VindexValues": { 2467 "cola_kid_map": "INT64(2), INT64(1)", 2468 "kid_index": "INT64(1)" 2469 } 2470 }, 2471 "TablesUsed": [ 2472 "user.overlap_vindex" 2473 ] 2474 } 2475 }, 2476 { 2477 "comment": "insert multiple rows in a multi column vindex table", 2478 "query": "insert multicolvin (column_a, column_b, column_c, kid) VALUES (1,2,3,4), (5,6,7,8)", 2479 "plan": { 2480 "QueryType": "INSERT", 2481 "Original": "insert multicolvin (column_a, column_b, column_c, kid) VALUES (1,2,3,4), (5,6,7,8)", 2482 "Instructions": { 2483 "OperatorType": "Insert", 2484 "Variant": "Sharded", 2485 "Keyspace": { 2486 "Name": "user", 2487 "Sharded": true 2488 }, 2489 "TargetTabletType": "PRIMARY", 2490 "MultiShardAutocommit": false, 2491 "Query": "insert into multicolvin(column_a, column_b, column_c, kid) values (:_column_a_0, :_column_b_0, :_column_c_0, :_kid_0), (:_column_a_1, :_column_b_1, :_column_c_1, :_kid_1)", 2492 "TableName": "multicolvin", 2493 "VindexValues": { 2494 "cola_map": "INT64(1), INT64(5)", 2495 "colb_colc_map": "INT64(2), INT64(6), INT64(3), INT64(7)", 2496 "kid_index": "INT64(4), INT64(8)" 2497 } 2498 }, 2499 "TablesUsed": [ 2500 "user.multicolvin" 2501 ] 2502 } 2503 }, 2504 { 2505 "comment": "delete row in a multi column vindex table", 2506 "query": "delete from multicolvin where kid=1", 2507 "v3-plan": { 2508 "QueryType": "DELETE", 2509 "Original": "delete from multicolvin where kid=1", 2510 "Instructions": { 2511 "OperatorType": "Delete", 2512 "Variant": "Equal", 2513 "Keyspace": { 2514 "Name": "user", 2515 "Sharded": true 2516 }, 2517 "TargetTabletType": "PRIMARY", 2518 "KsidLength": 1, 2519 "KsidVindex": "kid_index", 2520 "MultiShardAutocommit": false, 2521 "OwnedVindexQuery": "select kid, column_a, column_b, column_c from multicolvin where kid = 1 for update", 2522 "Query": "delete from multicolvin where kid = 1", 2523 "Table": "multicolvin", 2524 "Values": [ 2525 "INT64(1)" 2526 ], 2527 "Vindex": "kid_index" 2528 }, 2529 "TablesUsed": [ 2530 "user.multicolvin" 2531 ] 2532 }, 2533 "gen4-plan": { 2534 "QueryType": "DELETE", 2535 "Original": "delete from multicolvin where kid=1", 2536 "Instructions": { 2537 "OperatorType": "Delete", 2538 "Variant": "EqualUnique", 2539 "Keyspace": { 2540 "Name": "user", 2541 "Sharded": true 2542 }, 2543 "TargetTabletType": "PRIMARY", 2544 "KsidLength": 1, 2545 "KsidVindex": "kid_index", 2546 "MultiShardAutocommit": false, 2547 "OwnedVindexQuery": "select kid, column_a, column_b, column_c from multicolvin where kid = 1 for update", 2548 "Query": "delete from multicolvin where kid = 1", 2549 "Table": "multicolvin", 2550 "Values": [ 2551 "INT64(1)" 2552 ], 2553 "Vindex": "kid_index" 2554 }, 2555 "TablesUsed": [ 2556 "user.multicolvin" 2557 ] 2558 } 2559 }, 2560 { 2561 "comment": "update columns of multi column vindex", 2562 "query": "update multicolvin set column_b = 1, column_c = 2 where kid = 1", 2563 "v3-plan": { 2564 "QueryType": "UPDATE", 2565 "Original": "update multicolvin set column_b = 1, column_c = 2 where kid = 1", 2566 "Instructions": { 2567 "OperatorType": "Update", 2568 "Variant": "Equal", 2569 "Keyspace": { 2570 "Name": "user", 2571 "Sharded": true 2572 }, 2573 "TargetTabletType": "PRIMARY", 2574 "ChangedVindexValues": [ 2575 "colb_colc_map:4" 2576 ], 2577 "KsidLength": 1, 2578 "KsidVindex": "kid_index", 2579 "MultiShardAutocommit": false, 2580 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_b = 1 and column_c = 2 from multicolvin where kid = 1 for update", 2581 "Query": "update multicolvin set column_b = 1, column_c = 2 where kid = 1", 2582 "Table": "multicolvin", 2583 "Values": [ 2584 "INT64(1)" 2585 ], 2586 "Vindex": "kid_index" 2587 }, 2588 "TablesUsed": [ 2589 "user.multicolvin" 2590 ] 2591 }, 2592 "gen4-plan": { 2593 "QueryType": "UPDATE", 2594 "Original": "update multicolvin set column_b = 1, column_c = 2 where kid = 1", 2595 "Instructions": { 2596 "OperatorType": "Update", 2597 "Variant": "EqualUnique", 2598 "Keyspace": { 2599 "Name": "user", 2600 "Sharded": true 2601 }, 2602 "TargetTabletType": "PRIMARY", 2603 "ChangedVindexValues": [ 2604 "colb_colc_map:4" 2605 ], 2606 "KsidLength": 1, 2607 "KsidVindex": "kid_index", 2608 "MultiShardAutocommit": false, 2609 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_b = 1 and column_c = 2 from multicolvin where kid = 1 for update", 2610 "Query": "update multicolvin set column_b = 1, column_c = 2 where kid = 1", 2611 "Table": "multicolvin", 2612 "Values": [ 2613 "INT64(1)" 2614 ], 2615 "Vindex": "kid_index" 2616 }, 2617 "TablesUsed": [ 2618 "user.multicolvin" 2619 ] 2620 } 2621 }, 2622 { 2623 "comment": "update multiple vindexes, with multi column vindex", 2624 "query": "update multicolvin set column_a = 0, column_b = 1, column_c = 2 where kid = 1", 2625 "v3-plan": { 2626 "QueryType": "UPDATE", 2627 "Original": "update multicolvin set column_a = 0, column_b = 1, column_c = 2 where kid = 1", 2628 "Instructions": { 2629 "OperatorType": "Update", 2630 "Variant": "Equal", 2631 "Keyspace": { 2632 "Name": "user", 2633 "Sharded": true 2634 }, 2635 "TargetTabletType": "PRIMARY", 2636 "ChangedVindexValues": [ 2637 "cola_map:4", 2638 "colb_colc_map:5" 2639 ], 2640 "KsidLength": 1, 2641 "KsidVindex": "kid_index", 2642 "MultiShardAutocommit": false, 2643 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_a = 0, column_b = 1 and column_c = 2 from multicolvin where kid = 1 for update", 2644 "Query": "update multicolvin set column_a = 0, column_b = 1, column_c = 2 where kid = 1", 2645 "Table": "multicolvin", 2646 "Values": [ 2647 "INT64(1)" 2648 ], 2649 "Vindex": "kid_index" 2650 }, 2651 "TablesUsed": [ 2652 "user.multicolvin" 2653 ] 2654 }, 2655 "gen4-plan": { 2656 "QueryType": "UPDATE", 2657 "Original": "update multicolvin set column_a = 0, column_b = 1, column_c = 2 where kid = 1", 2658 "Instructions": { 2659 "OperatorType": "Update", 2660 "Variant": "EqualUnique", 2661 "Keyspace": { 2662 "Name": "user", 2663 "Sharded": true 2664 }, 2665 "TargetTabletType": "PRIMARY", 2666 "ChangedVindexValues": [ 2667 "cola_map:4", 2668 "colb_colc_map:5" 2669 ], 2670 "KsidLength": 1, 2671 "KsidVindex": "kid_index", 2672 "MultiShardAutocommit": false, 2673 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_a = 0, column_b = 1 and column_c = 2 from multicolvin where kid = 1 for update", 2674 "Query": "update multicolvin set column_a = 0, column_b = 1, column_c = 2 where kid = 1", 2675 "Table": "multicolvin", 2676 "Values": [ 2677 "INT64(1)" 2678 ], 2679 "Vindex": "kid_index" 2680 }, 2681 "TablesUsed": [ 2682 "user.multicolvin" 2683 ] 2684 } 2685 }, 2686 { 2687 "comment": "update with no primary vindex on where clause (scatter update)", 2688 "query": "update user_extra set val = 1", 2689 "plan": { 2690 "QueryType": "UPDATE", 2691 "Original": "update user_extra set val = 1", 2692 "Instructions": { 2693 "OperatorType": "Update", 2694 "Variant": "Scatter", 2695 "Keyspace": { 2696 "Name": "user", 2697 "Sharded": true 2698 }, 2699 "TargetTabletType": "PRIMARY", 2700 "MultiShardAutocommit": false, 2701 "Query": "update user_extra set val = 1", 2702 "Table": "user_extra" 2703 }, 2704 "TablesUsed": [ 2705 "user.user_extra" 2706 ] 2707 } 2708 }, 2709 { 2710 "comment": "update with target destination", 2711 "query": "update `user[-]`.user_extra set val = 1", 2712 "plan": { 2713 "QueryType": "UPDATE", 2714 "Original": "update `user[-]`.user_extra set val = 1", 2715 "Instructions": { 2716 "OperatorType": "Update", 2717 "Variant": "ByDestination", 2718 "Keyspace": { 2719 "Name": "user", 2720 "Sharded": true 2721 }, 2722 "TargetTabletType": "PRIMARY", 2723 "MultiShardAutocommit": false, 2724 "Query": "update user_extra set val = 1", 2725 "Table": "user_extra" 2726 }, 2727 "TablesUsed": [ 2728 "user.user_extra" 2729 ] 2730 } 2731 }, 2732 { 2733 "comment": "update with no primary vindex on where clause (scatter update) - multi shard autocommit", 2734 "query": "update /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ user_extra set val = 1", 2735 "plan": { 2736 "QueryType": "UPDATE", 2737 "Original": "update /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ user_extra set val = 1", 2738 "Instructions": { 2739 "OperatorType": "Update", 2740 "Variant": "Scatter", 2741 "Keyspace": { 2742 "Name": "user", 2743 "Sharded": true 2744 }, 2745 "TargetTabletType": "PRIMARY", 2746 "MultiShardAutocommit": true, 2747 "Query": "update /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ user_extra set val = 1", 2748 "Table": "user_extra" 2749 }, 2750 "TablesUsed": [ 2751 "user.user_extra" 2752 ] 2753 } 2754 }, 2755 { 2756 "comment": "update with no primary vindex on where clause (scatter update) - query timeout", 2757 "query": "update /*vt+ QUERY_TIMEOUT_MS=1 */ user_extra set val = 1", 2758 "plan": { 2759 "QueryType": "UPDATE", 2760 "Original": "update /*vt+ QUERY_TIMEOUT_MS=1 */ user_extra set val = 1", 2761 "Instructions": { 2762 "OperatorType": "Update", 2763 "Variant": "Scatter", 2764 "Keyspace": { 2765 "Name": "user", 2766 "Sharded": true 2767 }, 2768 "TargetTabletType": "PRIMARY", 2769 "MultiShardAutocommit": false, 2770 "Query": "update /*vt+ QUERY_TIMEOUT_MS=1 */ user_extra set val = 1", 2771 "QueryTimeout": 1, 2772 "Table": "user_extra" 2773 }, 2774 "TablesUsed": [ 2775 "user.user_extra" 2776 ] 2777 } 2778 }, 2779 { 2780 "comment": "update with non-comparison expr", 2781 "query": "update user_extra set val = 1 where id between 1 and 2", 2782 "plan": { 2783 "QueryType": "UPDATE", 2784 "Original": "update user_extra set val = 1 where id between 1 and 2", 2785 "Instructions": { 2786 "OperatorType": "Update", 2787 "Variant": "Scatter", 2788 "Keyspace": { 2789 "Name": "user", 2790 "Sharded": true 2791 }, 2792 "TargetTabletType": "PRIMARY", 2793 "MultiShardAutocommit": false, 2794 "Query": "update user_extra set val = 1 where id between 1 and 2", 2795 "Table": "user_extra" 2796 }, 2797 "TablesUsed": [ 2798 "user.user_extra" 2799 ] 2800 } 2801 }, 2802 { 2803 "comment": "update with primary id through IN clause", 2804 "query": "update user_extra set val = 1 where user_id in (1, 2)", 2805 "plan": { 2806 "QueryType": "UPDATE", 2807 "Original": "update user_extra set val = 1 where user_id in (1, 2)", 2808 "Instructions": { 2809 "OperatorType": "Update", 2810 "Variant": "IN", 2811 "Keyspace": { 2812 "Name": "user", 2813 "Sharded": true 2814 }, 2815 "TargetTabletType": "PRIMARY", 2816 "MultiShardAutocommit": false, 2817 "Query": "update user_extra set val = 1 where user_id in (1, 2)", 2818 "Table": "user_extra", 2819 "Values": [ 2820 "(INT64(1), INT64(2))" 2821 ], 2822 "Vindex": "user_index" 2823 }, 2824 "TablesUsed": [ 2825 "user.user_extra" 2826 ] 2827 } 2828 }, 2829 { 2830 "comment": "update with non-unique key", 2831 "query": "update user_extra set val = 1 where name = 'foo'", 2832 "plan": { 2833 "QueryType": "UPDATE", 2834 "Original": "update user_extra set val = 1 where name = 'foo'", 2835 "Instructions": { 2836 "OperatorType": "Update", 2837 "Variant": "Scatter", 2838 "Keyspace": { 2839 "Name": "user", 2840 "Sharded": true 2841 }, 2842 "TargetTabletType": "PRIMARY", 2843 "MultiShardAutocommit": false, 2844 "Query": "update user_extra set val = 1 where `name` = 'foo'", 2845 "Table": "user_extra" 2846 }, 2847 "TablesUsed": [ 2848 "user.user_extra" 2849 ] 2850 } 2851 }, 2852 { 2853 "comment": "update by lookup with IN clause", 2854 "query": "update user_extra set val = 1 where id in (1, 2)", 2855 "plan": { 2856 "QueryType": "UPDATE", 2857 "Original": "update user_extra set val = 1 where id in (1, 2)", 2858 "Instructions": { 2859 "OperatorType": "Update", 2860 "Variant": "Scatter", 2861 "Keyspace": { 2862 "Name": "user", 2863 "Sharded": true 2864 }, 2865 "TargetTabletType": "PRIMARY", 2866 "MultiShardAutocommit": false, 2867 "Query": "update user_extra set val = 1 where id in (1, 2)", 2868 "Table": "user_extra" 2869 }, 2870 "TablesUsed": [ 2871 "user.user_extra" 2872 ] 2873 } 2874 }, 2875 { 2876 "comment": "update with where clause with parens", 2877 "query": "update user_extra set val = 1 where (name = 'foo' or id = 1)", 2878 "plan": { 2879 "QueryType": "UPDATE", 2880 "Original": "update user_extra set val = 1 where (name = 'foo' or id = 1)", 2881 "Instructions": { 2882 "OperatorType": "Update", 2883 "Variant": "Scatter", 2884 "Keyspace": { 2885 "Name": "user", 2886 "Sharded": true 2887 }, 2888 "TargetTabletType": "PRIMARY", 2889 "MultiShardAutocommit": false, 2890 "Query": "update user_extra set val = 1 where `name` = 'foo' or id = 1", 2891 "Table": "user_extra" 2892 }, 2893 "TablesUsed": [ 2894 "user.user_extra" 2895 ] 2896 } 2897 }, 2898 { 2899 "comment": "delete from with no where clause", 2900 "query": "delete from user_extra", 2901 "plan": { 2902 "QueryType": "DELETE", 2903 "Original": "delete from user_extra", 2904 "Instructions": { 2905 "OperatorType": "Delete", 2906 "Variant": "Scatter", 2907 "Keyspace": { 2908 "Name": "user", 2909 "Sharded": true 2910 }, 2911 "TargetTabletType": "PRIMARY", 2912 "MultiShardAutocommit": false, 2913 "Query": "delete from user_extra", 2914 "Table": "user_extra" 2915 }, 2916 "TablesUsed": [ 2917 "user.user_extra" 2918 ] 2919 } 2920 }, 2921 { 2922 "comment": "delete with target destination", 2923 "query": "delete from `user[-]`.user_extra", 2924 "plan": { 2925 "QueryType": "DELETE", 2926 "Original": "delete from `user[-]`.user_extra", 2927 "Instructions": { 2928 "OperatorType": "Delete", 2929 "Variant": "ByDestination", 2930 "Keyspace": { 2931 "Name": "user", 2932 "Sharded": true 2933 }, 2934 "TargetTabletType": "PRIMARY", 2935 "MultiShardAutocommit": false, 2936 "Query": "delete from user_extra", 2937 "Table": "user_extra" 2938 }, 2939 "TablesUsed": [ 2940 "user.user_extra" 2941 ] 2942 } 2943 }, 2944 { 2945 "comment": "delete with non-comparison expr", 2946 "query": "delete from user_extra where user_id between 1 and 2", 2947 "plan": { 2948 "QueryType": "DELETE", 2949 "Original": "delete from user_extra where user_id between 1 and 2", 2950 "Instructions": { 2951 "OperatorType": "Delete", 2952 "Variant": "Scatter", 2953 "Keyspace": { 2954 "Name": "user", 2955 "Sharded": true 2956 }, 2957 "TargetTabletType": "PRIMARY", 2958 "MultiShardAutocommit": false, 2959 "Query": "delete from user_extra where user_id between 1 and 2", 2960 "Table": "user_extra" 2961 }, 2962 "TablesUsed": [ 2963 "user.user_extra" 2964 ] 2965 } 2966 }, 2967 { 2968 "comment": "delete from with no index match", 2969 "query": "delete from user_extra where name = 'jose'", 2970 "plan": { 2971 "QueryType": "DELETE", 2972 "Original": "delete from user_extra where name = 'jose'", 2973 "Instructions": { 2974 "OperatorType": "Delete", 2975 "Variant": "Scatter", 2976 "Keyspace": { 2977 "Name": "user", 2978 "Sharded": true 2979 }, 2980 "TargetTabletType": "PRIMARY", 2981 "MultiShardAutocommit": false, 2982 "Query": "delete from user_extra where `name` = 'jose'", 2983 "Table": "user_extra" 2984 }, 2985 "TablesUsed": [ 2986 "user.user_extra" 2987 ] 2988 } 2989 }, 2990 { 2991 "comment": "delete from with no index match - multi shard autocommit", 2992 "query": "delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where name = 'jose'", 2993 "plan": { 2994 "QueryType": "DELETE", 2995 "Original": "delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where name = 'jose'", 2996 "Instructions": { 2997 "OperatorType": "Delete", 2998 "Variant": "Scatter", 2999 "Keyspace": { 3000 "Name": "user", 3001 "Sharded": true 3002 }, 3003 "TargetTabletType": "PRIMARY", 3004 "MultiShardAutocommit": true, 3005 "Query": "delete /*vt+ MULTI_SHARD_AUTOCOMMIT=1 */ from user_extra where `name` = 'jose'", 3006 "Table": "user_extra" 3007 }, 3008 "TablesUsed": [ 3009 "user.user_extra" 3010 ] 3011 } 3012 }, 3013 { 3014 "comment": "delete from with no index match - query timeout", 3015 "query": "delete /*vt+ QUERY_TIMEOUT_MS=1 */ from user_extra where name = 'jose'", 3016 "plan": { 3017 "QueryType": "DELETE", 3018 "Original": "delete /*vt+ QUERY_TIMEOUT_MS=1 */ from user_extra where name = 'jose'", 3019 "Instructions": { 3020 "OperatorType": "Delete", 3021 "Variant": "Scatter", 3022 "Keyspace": { 3023 "Name": "user", 3024 "Sharded": true 3025 }, 3026 "TargetTabletType": "PRIMARY", 3027 "MultiShardAutocommit": false, 3028 "Query": "delete /*vt+ QUERY_TIMEOUT_MS=1 */ from user_extra where `name` = 'jose'", 3029 "QueryTimeout": 1, 3030 "Table": "user_extra" 3031 }, 3032 "TablesUsed": [ 3033 "user.user_extra" 3034 ] 3035 } 3036 }, 3037 { 3038 "comment": "delete from with primary id in through IN clause", 3039 "query": "delete from user_extra where user_id in (1, 2)", 3040 "plan": { 3041 "QueryType": "DELETE", 3042 "Original": "delete from user_extra where user_id in (1, 2)", 3043 "Instructions": { 3044 "OperatorType": "Delete", 3045 "Variant": "IN", 3046 "Keyspace": { 3047 "Name": "user", 3048 "Sharded": true 3049 }, 3050 "TargetTabletType": "PRIMARY", 3051 "MultiShardAutocommit": false, 3052 "Query": "delete from user_extra where user_id in (1, 2)", 3053 "Table": "user_extra", 3054 "Values": [ 3055 "(INT64(1), INT64(2))" 3056 ], 3057 "Vindex": "user_index" 3058 }, 3059 "TablesUsed": [ 3060 "user.user_extra" 3061 ] 3062 } 3063 }, 3064 { 3065 "comment": "unsharded update where inner query references outer query", 3066 "query": "update unsharded set col = (select id from unsharded_a where id = unsharded.col) where col = (select id from unsharded_b)", 3067 "v3-plan": { 3068 "QueryType": "UPDATE", 3069 "Original": "update unsharded set col = (select id from unsharded_a where id = unsharded.col) where col = (select id from unsharded_b)", 3070 "Instructions": { 3071 "OperatorType": "Update", 3072 "Variant": "Unsharded", 3073 "Keyspace": { 3074 "Name": "main", 3075 "Sharded": false 3076 }, 3077 "TargetTabletType": "PRIMARY", 3078 "MultiShardAutocommit": false, 3079 "Query": "update unsharded set col = (select id from unsharded_a where id = unsharded.col) where col = (select id from unsharded_b)", 3080 "Table": "unsharded, unsharded_a, unsharded_b" 3081 }, 3082 "TablesUsed": [ 3083 "main.unsharded" 3084 ] 3085 }, 3086 "gen4-plan": { 3087 "QueryType": "UPDATE", 3088 "Original": "update unsharded set col = (select id from unsharded_a where id = unsharded.col) where col = (select id from unsharded_b)", 3089 "Instructions": { 3090 "OperatorType": "Update", 3091 "Variant": "Unsharded", 3092 "Keyspace": { 3093 "Name": "main", 3094 "Sharded": false 3095 }, 3096 "TargetTabletType": "PRIMARY", 3097 "MultiShardAutocommit": false, 3098 "Query": "update unsharded set col = (select id from unsharded_a where id = unsharded.col) where col = (select id from unsharded_b)", 3099 "Table": "unsharded, unsharded_a, unsharded_b" 3100 }, 3101 "TablesUsed": [ 3102 "main.unsharded", 3103 "main.unsharded_a", 3104 "main.unsharded_b" 3105 ] 3106 } 3107 }, 3108 { 3109 "comment": "unsharded delete where inner query references outer query", 3110 "query": "delete from unsharded where col = (select id from unsharded_a where id = unsharded.col)", 3111 "v3-plan": { 3112 "QueryType": "DELETE", 3113 "Original": "delete from unsharded where col = (select id from unsharded_a where id = unsharded.col)", 3114 "Instructions": { 3115 "OperatorType": "Delete", 3116 "Variant": "Unsharded", 3117 "Keyspace": { 3118 "Name": "main", 3119 "Sharded": false 3120 }, 3121 "TargetTabletType": "PRIMARY", 3122 "MultiShardAutocommit": false, 3123 "Query": "delete from unsharded where col = (select id from unsharded_a where id = unsharded.col)", 3124 "Table": "unsharded, unsharded_a" 3125 }, 3126 "TablesUsed": [ 3127 "main.unsharded" 3128 ] 3129 }, 3130 "gen4-plan": { 3131 "QueryType": "DELETE", 3132 "Original": "delete from unsharded where col = (select id from unsharded_a where id = unsharded.col)", 3133 "Instructions": { 3134 "OperatorType": "Delete", 3135 "Variant": "Unsharded", 3136 "Keyspace": { 3137 "Name": "main", 3138 "Sharded": false 3139 }, 3140 "TargetTabletType": "PRIMARY", 3141 "MultiShardAutocommit": false, 3142 "Query": "delete from unsharded where col = (select id from unsharded_a where id = unsharded.col)", 3143 "Table": "unsharded, unsharded_a" 3144 }, 3145 "TablesUsed": [ 3146 "main.unsharded", 3147 "main.unsharded_a" 3148 ] 3149 } 3150 }, 3151 { 3152 "comment": "update vindex value to null", 3153 "query": "update user set name = null where id = 1", 3154 "v3-plan": { 3155 "QueryType": "UPDATE", 3156 "Original": "update user set name = null where id = 1", 3157 "Instructions": { 3158 "OperatorType": "Update", 3159 "Variant": "Equal", 3160 "Keyspace": { 3161 "Name": "user", 3162 "Sharded": true 3163 }, 3164 "TargetTabletType": "PRIMARY", 3165 "ChangedVindexValues": [ 3166 "name_user_map:3" 3167 ], 3168 "KsidLength": 1, 3169 "KsidVindex": "user_index", 3170 "MultiShardAutocommit": false, 3171 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id = 1 for update", 3172 "Query": "update `user` set `name` = null where id = 1", 3173 "Table": "user", 3174 "Values": [ 3175 "INT64(1)" 3176 ], 3177 "Vindex": "user_index" 3178 }, 3179 "TablesUsed": [ 3180 "user.user" 3181 ] 3182 }, 3183 "gen4-plan": { 3184 "QueryType": "UPDATE", 3185 "Original": "update user set name = null where id = 1", 3186 "Instructions": { 3187 "OperatorType": "Update", 3188 "Variant": "EqualUnique", 3189 "Keyspace": { 3190 "Name": "user", 3191 "Sharded": true 3192 }, 3193 "TargetTabletType": "PRIMARY", 3194 "ChangedVindexValues": [ 3195 "name_user_map:3" 3196 ], 3197 "KsidLength": 1, 3198 "KsidVindex": "user_index", 3199 "MultiShardAutocommit": false, 3200 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id = 1 for update", 3201 "Query": "update `user` set `name` = null where id = 1", 3202 "Table": "user", 3203 "Values": [ 3204 "INT64(1)" 3205 ], 3206 "Vindex": "user_index" 3207 }, 3208 "TablesUsed": [ 3209 "user.user" 3210 ] 3211 } 3212 }, 3213 { 3214 "comment": "insert using last_insert_id", 3215 "query": "insert into unsharded values(last_insert_id(), 2)", 3216 "plan": { 3217 "QueryType": "INSERT", 3218 "Original": "insert into unsharded values(last_insert_id(), 2)", 3219 "Instructions": { 3220 "OperatorType": "Insert", 3221 "Variant": "Unsharded", 3222 "Keyspace": { 3223 "Name": "main", 3224 "Sharded": false 3225 }, 3226 "TargetTabletType": "PRIMARY", 3227 "MultiShardAutocommit": false, 3228 "Query": "insert into unsharded values (:__lastInsertId, 2)", 3229 "TableName": "unsharded" 3230 }, 3231 "TablesUsed": [ 3232 "main.unsharded" 3233 ] 3234 } 3235 }, 3236 { 3237 "comment": "update vindex value to null with multiple primary keyspace id", 3238 "query": "update user set name = null where id in (1, 2, 3)", 3239 "plan": { 3240 "QueryType": "UPDATE", 3241 "Original": "update user set name = null where id in (1, 2, 3)", 3242 "Instructions": { 3243 "OperatorType": "Update", 3244 "Variant": "IN", 3245 "Keyspace": { 3246 "Name": "user", 3247 "Sharded": true 3248 }, 3249 "TargetTabletType": "PRIMARY", 3250 "ChangedVindexValues": [ 3251 "name_user_map:3" 3252 ], 3253 "KsidLength": 1, 3254 "KsidVindex": "user_index", 3255 "MultiShardAutocommit": false, 3256 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id in (1, 2, 3) for update", 3257 "Query": "update `user` set `name` = null where id in (1, 2, 3)", 3258 "Table": "user", 3259 "Values": [ 3260 "(INT64(1), INT64(2), INT64(3))" 3261 ], 3262 "Vindex": "user_index" 3263 }, 3264 "TablesUsed": [ 3265 "user.user" 3266 ] 3267 } 3268 }, 3269 { 3270 "comment": "update vindex value to null without a where clause", 3271 "query": "update user set name = null", 3272 "plan": { 3273 "QueryType": "UPDATE", 3274 "Original": "update user set name = null", 3275 "Instructions": { 3276 "OperatorType": "Update", 3277 "Variant": "Scatter", 3278 "Keyspace": { 3279 "Name": "user", 3280 "Sharded": true 3281 }, 3282 "TargetTabletType": "PRIMARY", 3283 "ChangedVindexValues": [ 3284 "name_user_map:3" 3285 ], 3286 "KsidLength": 1, 3287 "KsidVindex": "user_index", 3288 "MultiShardAutocommit": false, 3289 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` for update", 3290 "Query": "update `user` set `name` = null", 3291 "Table": "user" 3292 }, 3293 "TablesUsed": [ 3294 "user.user" 3295 ] 3296 } 3297 }, 3298 { 3299 "comment": "update vindex value to null with complex where clause", 3300 "query": "update user set name = null where id + 1 = 2", 3301 "plan": { 3302 "QueryType": "UPDATE", 3303 "Original": "update user set name = null where id + 1 = 2", 3304 "Instructions": { 3305 "OperatorType": "Update", 3306 "Variant": "Scatter", 3307 "Keyspace": { 3308 "Name": "user", 3309 "Sharded": true 3310 }, 3311 "TargetTabletType": "PRIMARY", 3312 "ChangedVindexValues": [ 3313 "name_user_map:3" 3314 ], 3315 "KsidLength": 1, 3316 "KsidVindex": "user_index", 3317 "MultiShardAutocommit": false, 3318 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = null from `user` where id + 1 = 2 for update", 3319 "Query": "update `user` set `name` = null where id + 1 = 2", 3320 "Table": "user" 3321 }, 3322 "TablesUsed": [ 3323 "user.user" 3324 ] 3325 } 3326 }, 3327 { 3328 "comment": "delete from user by primary keyspace id with in clause", 3329 "query": "delete from user where id in (1, 2, 3)", 3330 "plan": { 3331 "QueryType": "DELETE", 3332 "Original": "delete from user where id in (1, 2, 3)", 3333 "Instructions": { 3334 "OperatorType": "Delete", 3335 "Variant": "IN", 3336 "Keyspace": { 3337 "Name": "user", 3338 "Sharded": true 3339 }, 3340 "TargetTabletType": "PRIMARY", 3341 "KsidLength": 1, 3342 "KsidVindex": "user_index", 3343 "MultiShardAutocommit": false, 3344 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id in (1, 2, 3) for update", 3345 "Query": "delete from `user` where id in (1, 2, 3)", 3346 "Table": "user", 3347 "Values": [ 3348 "(INT64(1), INT64(2), INT64(3))" 3349 ], 3350 "Vindex": "user_index" 3351 }, 3352 "TablesUsed": [ 3353 "user.user" 3354 ] 3355 } 3356 }, 3357 { 3358 "comment": "delete from user by complex expression", 3359 "query": "delete from user where id + 1 = 2", 3360 "plan": { 3361 "QueryType": "DELETE", 3362 "Original": "delete from user where id + 1 = 2", 3363 "Instructions": { 3364 "OperatorType": "Delete", 3365 "Variant": "Scatter", 3366 "Keyspace": { 3367 "Name": "user", 3368 "Sharded": true 3369 }, 3370 "TargetTabletType": "PRIMARY", 3371 "KsidLength": 1, 3372 "KsidVindex": "user_index", 3373 "MultiShardAutocommit": false, 3374 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where id + 1 = 2 for update", 3375 "Query": "delete from `user` where id + 1 = 2", 3376 "Table": "user" 3377 }, 3378 "TablesUsed": [ 3379 "user.user" 3380 ] 3381 } 3382 }, 3383 { 3384 "comment": "delete from user without a where clause", 3385 "query": "delete from user", 3386 "plan": { 3387 "QueryType": "DELETE", 3388 "Original": "delete from user", 3389 "Instructions": { 3390 "OperatorType": "Delete", 3391 "Variant": "Scatter", 3392 "Keyspace": { 3393 "Name": "user", 3394 "Sharded": true 3395 }, 3396 "TargetTabletType": "PRIMARY", 3397 "KsidLength": 1, 3398 "KsidVindex": "user_index", 3399 "MultiShardAutocommit": false, 3400 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", 3401 "Query": "delete from `user`", 3402 "Table": "user" 3403 }, 3404 "TablesUsed": [ 3405 "user.user" 3406 ] 3407 } 3408 }, 3409 { 3410 "comment": "delete with single table targets", 3411 "query": "delete music from music where id = 1", 3412 "v3-plan": { 3413 "QueryType": "DELETE", 3414 "Original": "delete music from music where id = 1", 3415 "Instructions": { 3416 "OperatorType": "Delete", 3417 "Variant": "Equal", 3418 "Keyspace": { 3419 "Name": "user", 3420 "Sharded": true 3421 }, 3422 "TargetTabletType": "PRIMARY", 3423 "KsidLength": 1, 3424 "KsidVindex": "user_index", 3425 "MultiShardAutocommit": false, 3426 "OwnedVindexQuery": "select user_id, id from music where id = 1 for update", 3427 "Query": "delete from music where id = 1", 3428 "Table": "music", 3429 "Values": [ 3430 "INT64(1)" 3431 ], 3432 "Vindex": "music_user_map" 3433 }, 3434 "TablesUsed": [ 3435 "user.music" 3436 ] 3437 }, 3438 "gen4-plan": { 3439 "QueryType": "DELETE", 3440 "Original": "delete music from music where id = 1", 3441 "Instructions": { 3442 "OperatorType": "Delete", 3443 "Variant": "EqualUnique", 3444 "Keyspace": { 3445 "Name": "user", 3446 "Sharded": true 3447 }, 3448 "TargetTabletType": "PRIMARY", 3449 "KsidLength": 1, 3450 "KsidVindex": "user_index", 3451 "MultiShardAutocommit": false, 3452 "OwnedVindexQuery": "select user_id, id from music where id = 1 for update", 3453 "Query": "delete from music where id = 1", 3454 "Table": "music", 3455 "Values": [ 3456 "INT64(1)" 3457 ], 3458 "Vindex": "music_user_map" 3459 }, 3460 "TablesUsed": [ 3461 "user.music" 3462 ] 3463 } 3464 }, 3465 { 3466 "comment": "scatter update table with owned vindexes without changing lookup vindex", 3467 "query": "update user set val = 1", 3468 "plan": { 3469 "QueryType": "UPDATE", 3470 "Original": "update user set val = 1", 3471 "Instructions": { 3472 "OperatorType": "Update", 3473 "Variant": "Scatter", 3474 "Keyspace": { 3475 "Name": "user", 3476 "Sharded": true 3477 }, 3478 "TargetTabletType": "PRIMARY", 3479 "MultiShardAutocommit": false, 3480 "Query": "update `user` set val = 1", 3481 "Table": "user" 3482 }, 3483 "TablesUsed": [ 3484 "user.user" 3485 ] 3486 } 3487 }, 3488 { 3489 "comment": "scatter delete with owned lookup vindex", 3490 "query": "delete from user", 3491 "plan": { 3492 "QueryType": "DELETE", 3493 "Original": "delete from user", 3494 "Instructions": { 3495 "OperatorType": "Delete", 3496 "Variant": "Scatter", 3497 "Keyspace": { 3498 "Name": "user", 3499 "Sharded": true 3500 }, 3501 "TargetTabletType": "PRIMARY", 3502 "KsidLength": 1, 3503 "KsidVindex": "user_index", 3504 "MultiShardAutocommit": false, 3505 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", 3506 "Query": "delete from `user`", 3507 "Table": "user" 3508 }, 3509 "TablesUsed": [ 3510 "user.user" 3511 ] 3512 } 3513 }, 3514 { 3515 "comment": "update multi column vindex, without values for all the vindex columns", 3516 "query": "update multicolvin set column_c = 2 where kid = 1", 3517 "v3-plan": { 3518 "QueryType": "UPDATE", 3519 "Original": "update multicolvin set column_c = 2 where kid = 1", 3520 "Instructions": { 3521 "OperatorType": "Update", 3522 "Variant": "Equal", 3523 "Keyspace": { 3524 "Name": "user", 3525 "Sharded": true 3526 }, 3527 "TargetTabletType": "PRIMARY", 3528 "ChangedVindexValues": [ 3529 "colb_colc_map:4" 3530 ], 3531 "KsidLength": 1, 3532 "KsidVindex": "kid_index", 3533 "MultiShardAutocommit": false, 3534 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_c = 2 from multicolvin where kid = 1 for update", 3535 "Query": "update multicolvin set column_c = 2 where kid = 1", 3536 "Table": "multicolvin", 3537 "Values": [ 3538 "INT64(1)" 3539 ], 3540 "Vindex": "kid_index" 3541 }, 3542 "TablesUsed": [ 3543 "user.multicolvin" 3544 ] 3545 }, 3546 "gen4-plan": { 3547 "QueryType": "UPDATE", 3548 "Original": "update multicolvin set column_c = 2 where kid = 1", 3549 "Instructions": { 3550 "OperatorType": "Update", 3551 "Variant": "EqualUnique", 3552 "Keyspace": { 3553 "Name": "user", 3554 "Sharded": true 3555 }, 3556 "TargetTabletType": "PRIMARY", 3557 "ChangedVindexValues": [ 3558 "colb_colc_map:4" 3559 ], 3560 "KsidLength": 1, 3561 "KsidVindex": "kid_index", 3562 "MultiShardAutocommit": false, 3563 "OwnedVindexQuery": "select kid, column_a, column_b, column_c, column_c = 2 from multicolvin where kid = 1 for update", 3564 "Query": "update multicolvin set column_c = 2 where kid = 1", 3565 "Table": "multicolvin", 3566 "Values": [ 3567 "INT64(1)" 3568 ], 3569 "Vindex": "kid_index" 3570 }, 3571 "TablesUsed": [ 3572 "user.multicolvin" 3573 ] 3574 } 3575 }, 3576 { 3577 "comment": "update with binary value", 3578 "query": "update user set name = _binary 'abc' where id = 1", 3579 "v3-plan": { 3580 "QueryType": "UPDATE", 3581 "Original": "update user set name = _binary 'abc' where id = 1", 3582 "Instructions": { 3583 "OperatorType": "Update", 3584 "Variant": "Equal", 3585 "Keyspace": { 3586 "Name": "user", 3587 "Sharded": true 3588 }, 3589 "TargetTabletType": "PRIMARY", 3590 "ChangedVindexValues": [ 3591 "name_user_map:3" 3592 ], 3593 "KsidLength": 1, 3594 "KsidVindex": "user_index", 3595 "MultiShardAutocommit": false, 3596 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = _binary 'abc' from `user` where id = 1 for update", 3597 "Query": "update `user` set `name` = _binary 'abc' where id = 1", 3598 "Table": "user", 3599 "Values": [ 3600 "INT64(1)" 3601 ], 3602 "Vindex": "user_index" 3603 }, 3604 "TablesUsed": [ 3605 "user.user" 3606 ] 3607 }, 3608 "gen4-plan": { 3609 "QueryType": "UPDATE", 3610 "Original": "update user set name = _binary 'abc' where id = 1", 3611 "Instructions": { 3612 "OperatorType": "Update", 3613 "Variant": "EqualUnique", 3614 "Keyspace": { 3615 "Name": "user", 3616 "Sharded": true 3617 }, 3618 "TargetTabletType": "PRIMARY", 3619 "ChangedVindexValues": [ 3620 "name_user_map:3" 3621 ], 3622 "KsidLength": 1, 3623 "KsidVindex": "user_index", 3624 "MultiShardAutocommit": false, 3625 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = _binary 'abc' from `user` where id = 1 for update", 3626 "Query": "update `user` set `name` = _binary 'abc' where id = 1", 3627 "Table": "user", 3628 "Values": [ 3629 "INT64(1)" 3630 ], 3631 "Vindex": "user_index" 3632 }, 3633 "TablesUsed": [ 3634 "user.user" 3635 ] 3636 } 3637 }, 3638 { 3639 "comment": "delete with binary value", 3640 "query": "delete from user where name = _binary 'abc'", 3641 "v3-plan": { 3642 "QueryType": "DELETE", 3643 "Original": "delete from user where name = _binary 'abc'", 3644 "Instructions": { 3645 "OperatorType": "Delete", 3646 "Variant": "Scatter", 3647 "Keyspace": { 3648 "Name": "user", 3649 "Sharded": true 3650 }, 3651 "TargetTabletType": "PRIMARY", 3652 "KsidLength": 1, 3653 "KsidVindex": "user_index", 3654 "MultiShardAutocommit": false, 3655 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where `name` = _binary 'abc' for update", 3656 "Query": "delete from `user` where `name` = _binary 'abc'", 3657 "Table": "user" 3658 }, 3659 "TablesUsed": [ 3660 "user.user" 3661 ] 3662 }, 3663 "gen4-plan": { 3664 "QueryType": "DELETE", 3665 "Original": "delete from user where name = _binary 'abc'", 3666 "Instructions": { 3667 "OperatorType": "Delete", 3668 "Variant": "Equal", 3669 "Keyspace": { 3670 "Name": "user", 3671 "Sharded": true 3672 }, 3673 "TargetTabletType": "PRIMARY", 3674 "KsidLength": 1, 3675 "KsidVindex": "user_index", 3676 "MultiShardAutocommit": false, 3677 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where `name` = _binary 'abc' for update", 3678 "Query": "delete from `user` where `name` = _binary 'abc'", 3679 "Table": "user", 3680 "Values": [ 3681 "VARBINARY(\"abc\")" 3682 ], 3683 "Vindex": "name_user_map" 3684 }, 3685 "TablesUsed": [ 3686 "user.user" 3687 ] 3688 } 3689 }, 3690 { 3691 "comment": "delete with shard targeting", 3692 "query": "delete from `user[-]`.user", 3693 "plan": { 3694 "QueryType": "DELETE", 3695 "Original": "delete from `user[-]`.user", 3696 "Instructions": { 3697 "OperatorType": "Delete", 3698 "Variant": "ByDestination", 3699 "Keyspace": { 3700 "Name": "user", 3701 "Sharded": true 3702 }, 3703 "TargetTabletType": "PRIMARY", 3704 "KsidLength": 1, 3705 "KsidVindex": "user_index", 3706 "MultiShardAutocommit": false, 3707 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", 3708 "Query": "delete from `user`", 3709 "Table": "user" 3710 }, 3711 "TablesUsed": [ 3712 "user.user" 3713 ] 3714 } 3715 }, 3716 { 3717 "comment": "update with shard targeting", 3718 "query": "update `user[-]`.user set name = 'myname'", 3719 "plan": { 3720 "QueryType": "UPDATE", 3721 "Original": "update `user[-]`.user set name = 'myname'", 3722 "Instructions": { 3723 "OperatorType": "Update", 3724 "Variant": "ByDestination", 3725 "Keyspace": { 3726 "Name": "user", 3727 "Sharded": true 3728 }, 3729 "TargetTabletType": "PRIMARY", 3730 "ChangedVindexValues": [ 3731 "name_user_map:3" 3732 ], 3733 "KsidLength": 1, 3734 "KsidVindex": "user_index", 3735 "MultiShardAutocommit": false, 3736 "OwnedVindexQuery": "select Id, `Name`, Costly, `name` = 'myname' from `user` for update", 3737 "Query": "update `user` set `name` = 'myname'", 3738 "Table": "user" 3739 }, 3740 "TablesUsed": [ 3741 "user.user" 3742 ] 3743 } 3744 }, 3745 { 3746 "comment": "update with shard targeting without vindex", 3747 "query": "update `user[-]`.user_extra set val = 1", 3748 "plan": { 3749 "QueryType": "UPDATE", 3750 "Original": "update `user[-]`.user_extra set val = 1", 3751 "Instructions": { 3752 "OperatorType": "Update", 3753 "Variant": "ByDestination", 3754 "Keyspace": { 3755 "Name": "user", 3756 "Sharded": true 3757 }, 3758 "TargetTabletType": "PRIMARY", 3759 "MultiShardAutocommit": false, 3760 "Query": "update user_extra set val = 1", 3761 "Table": "user_extra" 3762 }, 3763 "TablesUsed": [ 3764 "user.user_extra" 3765 ] 3766 } 3767 }, 3768 { 3769 "comment": "multi-table delete with single table", 3770 "query": "delete u.* from user u where u.id * u.col = u.foo", 3771 "plan": { 3772 "QueryType": "DELETE", 3773 "Original": "delete u.* from user u where u.id * u.col = u.foo", 3774 "Instructions": { 3775 "OperatorType": "Delete", 3776 "Variant": "Scatter", 3777 "Keyspace": { 3778 "Name": "user", 3779 "Sharded": true 3780 }, 3781 "TargetTabletType": "PRIMARY", 3782 "KsidLength": 1, 3783 "KsidVindex": "user_index", 3784 "MultiShardAutocommit": false, 3785 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where `user`.id * `user`.col = `user`.foo for update", 3786 "Query": "delete from `user` where `user`.id * `user`.col = `user`.foo", 3787 "Table": "user" 3788 }, 3789 "TablesUsed": [ 3790 "user.user" 3791 ] 3792 } 3793 }, 3794 { 3795 "comment": "delete with unknown reference", 3796 "query": "delete music from user where id = 1", 3797 "plan": "VT03003: unknown table 'music' in MULTI DELETE" 3798 }, 3799 { 3800 "comment": "delete with derived tables", 3801 "query": "delete music from (select * from user) music where id = 1", 3802 "plan": "VT03004: the target table music of the DELETE is not updatable" 3803 }, 3804 { 3805 "comment": "delete with derived tables with unknown table", 3806 "query": "delete user from (select * from user) music where id = 1", 3807 "plan": "VT03003: unknown table 'user' in MULTI DELETE" 3808 }, 3809 { 3810 "comment": "INSERT INTO main.user_privacy_consents (user_id, accepted_at) SELECT user_id, accepted_at FROM (SELECT 1 as user_id, 1629194864 as accepted_at) AS tmp WHERE NOT EXISTS (SELECT user_id FROM main.user_privacy_consents WHERE user_id = 1)", 3811 "query": "INSERT INTO main.user_privacy_consents (user_id, accepted_at) SELECT user_id, accepted_at FROM (SELECT 1 as user_id, 1629194864 as accepted_at) AS tmp WHERE NOT EXISTS (SELECT user_id FROM main.user_privacy_consents WHERE user_id = 1)", 3812 "v3-plan": { 3813 "QueryType": "INSERT", 3814 "Original": "INSERT INTO main.user_privacy_consents (user_id, accepted_at) SELECT user_id, accepted_at FROM (SELECT 1 as user_id, 1629194864 as accepted_at) AS tmp WHERE NOT EXISTS (SELECT user_id FROM main.user_privacy_consents WHERE user_id = 1)", 3815 "Instructions": { 3816 "OperatorType": "Insert", 3817 "Variant": "Unsharded", 3818 "Keyspace": { 3819 "Name": "main", 3820 "Sharded": false 3821 }, 3822 "TargetTabletType": "PRIMARY", 3823 "MultiShardAutocommit": false, 3824 "Query": "insert into user_privacy_consents(user_id, accepted_at) select user_id, accepted_at from (select 1 as user_id, 1629194864 as accepted_at from dual) as tmp where not exists (select 1 from user_privacy_consents where user_id = 1 limit 1) for update", 3825 "TableName": "user_privacy_consents" 3826 }, 3827 "TablesUsed": [ 3828 "main.user_privacy_consents" 3829 ] 3830 }, 3831 "gen4-plan": { 3832 "QueryType": "INSERT", 3833 "Original": "INSERT INTO main.user_privacy_consents (user_id, accepted_at) SELECT user_id, accepted_at FROM (SELECT 1 as user_id, 1629194864 as accepted_at) AS tmp WHERE NOT EXISTS (SELECT user_id FROM main.user_privacy_consents WHERE user_id = 1)", 3834 "Instructions": { 3835 "OperatorType": "Insert", 3836 "Variant": "Unsharded", 3837 "Keyspace": { 3838 "Name": "main", 3839 "Sharded": false 3840 }, 3841 "TargetTabletType": "PRIMARY", 3842 "MultiShardAutocommit": false, 3843 "Query": "insert into user_privacy_consents(user_id, accepted_at) select user_id, accepted_at from (select 1 as user_id, 1629194864 as accepted_at from dual) as tmp where not exists (select 1 from user_privacy_consents where user_id = 1 limit 1) for update", 3844 "TableName": "user_privacy_consents" 3845 }, 3846 "TablesUsed": [ 3847 "main.dual", 3848 "main.user_privacy_consents" 3849 ] 3850 } 3851 }, 3852 { 3853 "comment": "Delete on backfilling unique lookup vindex should be a scatter", 3854 "query": "delete from zlookup_unique.t1 where c2 = 20", 3855 "plan": { 3856 "QueryType": "DELETE", 3857 "Original": "delete from zlookup_unique.t1 where c2 = 20", 3858 "Instructions": { 3859 "OperatorType": "Delete", 3860 "Variant": "Scatter", 3861 "Keyspace": { 3862 "Name": "zlookup_unique", 3863 "Sharded": true 3864 }, 3865 "TargetTabletType": "PRIMARY", 3866 "KsidLength": 1, 3867 "KsidVindex": "xxhash", 3868 "MultiShardAutocommit": false, 3869 "OwnedVindexQuery": "select c1, c2, c3 from t1 where c2 = 20 for update", 3870 "Query": "delete from t1 where c2 = 20", 3871 "Table": "t1" 3872 }, 3873 "TablesUsed": [ 3874 "zlookup_unique.t1" 3875 ] 3876 } 3877 }, 3878 { 3879 "comment": "Update on backfilling unique lookup vindex should be a scatter", 3880 "query": "update zlookup_unique.t1 set c2 = 1 where c2 = 20", 3881 "plan": { 3882 "QueryType": "UPDATE", 3883 "Original": "update zlookup_unique.t1 set c2 = 1 where c2 = 20", 3884 "Instructions": { 3885 "OperatorType": "Update", 3886 "Variant": "Scatter", 3887 "Keyspace": { 3888 "Name": "zlookup_unique", 3889 "Sharded": true 3890 }, 3891 "TargetTabletType": "PRIMARY", 3892 "ChangedVindexValues": [ 3893 "lookup_t1:3" 3894 ], 3895 "KsidLength": 1, 3896 "KsidVindex": "xxhash", 3897 "MultiShardAutocommit": false, 3898 "OwnedVindexQuery": "select c1, c2, c3, c2 = 1 from t1 where c2 = 20 for update", 3899 "Query": "update t1 set c2 = 1 where c2 = 20", 3900 "Table": "t1" 3901 }, 3902 "TablesUsed": [ 3903 "zlookup_unique.t1" 3904 ] 3905 } 3906 }, 3907 { 3908 "comment": "Delete on backfilling and non-backfilling unique lookup vindexes should be a delete equal", 3909 "query": "delete from zlookup_unique.t1 where c2 = 10 and c3 = 20", 3910 "v3-plan": { 3911 "QueryType": "DELETE", 3912 "Original": "delete from zlookup_unique.t1 where c2 = 10 and c3 = 20", 3913 "Instructions": { 3914 "OperatorType": "Delete", 3915 "Variant": "Equal", 3916 "Keyspace": { 3917 "Name": "zlookup_unique", 3918 "Sharded": true 3919 }, 3920 "TargetTabletType": "PRIMARY", 3921 "KsidLength": 1, 3922 "KsidVindex": "xxhash", 3923 "MultiShardAutocommit": false, 3924 "OwnedVindexQuery": "select c1, c2, c3 from t1 where c2 = 10 and c3 = 20 for update", 3925 "Query": "delete from t1 where c2 = 10 and c3 = 20", 3926 "Table": "t1", 3927 "Values": [ 3928 "INT64(20)" 3929 ], 3930 "Vindex": "lookup_t1_2" 3931 }, 3932 "TablesUsed": [ 3933 "zlookup_unique.t1" 3934 ] 3935 }, 3936 "gen4-plan": { 3937 "QueryType": "DELETE", 3938 "Original": "delete from zlookup_unique.t1 where c2 = 10 and c3 = 20", 3939 "Instructions": { 3940 "OperatorType": "Delete", 3941 "Variant": "EqualUnique", 3942 "Keyspace": { 3943 "Name": "zlookup_unique", 3944 "Sharded": true 3945 }, 3946 "TargetTabletType": "PRIMARY", 3947 "KsidLength": 1, 3948 "KsidVindex": "xxhash", 3949 "MultiShardAutocommit": false, 3950 "OwnedVindexQuery": "select c1, c2, c3 from t1 where c2 = 10 and c3 = 20 for update", 3951 "Query": "delete from t1 where c2 = 10 and c3 = 20", 3952 "Table": "t1", 3953 "Values": [ 3954 "INT64(20)" 3955 ], 3956 "Vindex": "lookup_t1_2" 3957 }, 3958 "TablesUsed": [ 3959 "zlookup_unique.t1" 3960 ] 3961 } 3962 }, 3963 { 3964 "comment": "Update on backfilling and non-backfilling unique lookup vindexes should be an equal", 3965 "query": "update zlookup_unique.t1 set c2 = 1 where c2 = 10 and c3 = 20", 3966 "v3-plan": { 3967 "QueryType": "UPDATE", 3968 "Original": "update zlookup_unique.t1 set c2 = 1 where c2 = 10 and c3 = 20", 3969 "Instructions": { 3970 "OperatorType": "Update", 3971 "Variant": "Equal", 3972 "Keyspace": { 3973 "Name": "zlookup_unique", 3974 "Sharded": true 3975 }, 3976 "TargetTabletType": "PRIMARY", 3977 "ChangedVindexValues": [ 3978 "lookup_t1:3" 3979 ], 3980 "KsidLength": 1, 3981 "KsidVindex": "xxhash", 3982 "MultiShardAutocommit": false, 3983 "OwnedVindexQuery": "select c1, c2, c3, c2 = 1 from t1 where c2 = 10 and c3 = 20 for update", 3984 "Query": "update t1 set c2 = 1 where c2 = 10 and c3 = 20", 3985 "Table": "t1", 3986 "Values": [ 3987 "INT64(20)" 3988 ], 3989 "Vindex": "lookup_t1_2" 3990 }, 3991 "TablesUsed": [ 3992 "zlookup_unique.t1" 3993 ] 3994 }, 3995 "gen4-plan": { 3996 "QueryType": "UPDATE", 3997 "Original": "update zlookup_unique.t1 set c2 = 1 where c2 = 10 and c3 = 20", 3998 "Instructions": { 3999 "OperatorType": "Update", 4000 "Variant": "EqualUnique", 4001 "Keyspace": { 4002 "Name": "zlookup_unique", 4003 "Sharded": true 4004 }, 4005 "TargetTabletType": "PRIMARY", 4006 "ChangedVindexValues": [ 4007 "lookup_t1:3" 4008 ], 4009 "KsidLength": 1, 4010 "KsidVindex": "xxhash", 4011 "MultiShardAutocommit": false, 4012 "OwnedVindexQuery": "select c1, c2, c3, c2 = 1 from t1 where c2 = 10 and c3 = 20 for update", 4013 "Query": "update t1 set c2 = 1 where c2 = 10 and c3 = 20", 4014 "Table": "t1", 4015 "Values": [ 4016 "INT64(20)" 4017 ], 4018 "Vindex": "lookup_t1_2" 4019 }, 4020 "TablesUsed": [ 4021 "zlookup_unique.t1" 4022 ] 4023 } 4024 }, 4025 { 4026 "comment": "Delete EQUAL and IN on backfilling and non-backfilling unique lookup vindexes should be a delete IN", 4027 "query": "delete from zlookup_unique.t1 where c2 = 10 and c3 in (20, 21)", 4028 "plan": { 4029 "QueryType": "DELETE", 4030 "Original": "delete from zlookup_unique.t1 where c2 = 10 and c3 in (20, 21)", 4031 "Instructions": { 4032 "OperatorType": "Delete", 4033 "Variant": "IN", 4034 "Keyspace": { 4035 "Name": "zlookup_unique", 4036 "Sharded": true 4037 }, 4038 "TargetTabletType": "PRIMARY", 4039 "KsidLength": 1, 4040 "KsidVindex": "xxhash", 4041 "MultiShardAutocommit": false, 4042 "OwnedVindexQuery": "select c1, c2, c3 from t1 where c2 = 10 and c3 in (20, 21) for update", 4043 "Query": "delete from t1 where c2 = 10 and c3 in (20, 21)", 4044 "Table": "t1", 4045 "Values": [ 4046 "(INT64(20), INT64(21))" 4047 ], 4048 "Vindex": "lookup_t1_2" 4049 }, 4050 "TablesUsed": [ 4051 "zlookup_unique.t1" 4052 ] 4053 } 4054 }, 4055 { 4056 "comment": "Update EQUAL and IN on backfilling and non-backfilling unique lookup vindexes should be an update IN", 4057 "query": "update zlookup_unique.t1 set c2 = 1 where c2 = 10 and c3 in (20, 21)", 4058 "plan": { 4059 "QueryType": "UPDATE", 4060 "Original": "update zlookup_unique.t1 set c2 = 1 where c2 = 10 and c3 in (20, 21)", 4061 "Instructions": { 4062 "OperatorType": "Update", 4063 "Variant": "IN", 4064 "Keyspace": { 4065 "Name": "zlookup_unique", 4066 "Sharded": true 4067 }, 4068 "TargetTabletType": "PRIMARY", 4069 "ChangedVindexValues": [ 4070 "lookup_t1:3" 4071 ], 4072 "KsidLength": 1, 4073 "KsidVindex": "xxhash", 4074 "MultiShardAutocommit": false, 4075 "OwnedVindexQuery": "select c1, c2, c3, c2 = 1 from t1 where c2 = 10 and c3 in (20, 21) for update", 4076 "Query": "update t1 set c2 = 1 where c2 = 10 and c3 in (20, 21)", 4077 "Table": "t1", 4078 "Values": [ 4079 "(INT64(20), INT64(21))" 4080 ], 4081 "Vindex": "lookup_t1_2" 4082 }, 4083 "TablesUsed": [ 4084 "zlookup_unique.t1" 4085 ] 4086 } 4087 }, 4088 { 4089 "comment": "update with alias table", 4090 "query": "update user u set u.name = 'john' where u.col > 20", 4091 "plan": { 4092 "QueryType": "UPDATE", 4093 "Original": "update user u set u.name = 'john' where u.col > 20", 4094 "Instructions": { 4095 "OperatorType": "Update", 4096 "Variant": "Scatter", 4097 "Keyspace": { 4098 "Name": "user", 4099 "Sharded": true 4100 }, 4101 "TargetTabletType": "PRIMARY", 4102 "ChangedVindexValues": [ 4103 "name_user_map:3" 4104 ], 4105 "KsidLength": 1, 4106 "KsidVindex": "user_index", 4107 "MultiShardAutocommit": false, 4108 "OwnedVindexQuery": "select Id, `Name`, Costly, u.`name` = 'john' from `user` as u where u.col > 20 for update", 4109 "Query": "update `user` as u set u.`name` = 'john' where u.col > 20", 4110 "Table": "user" 4111 }, 4112 "TablesUsed": [ 4113 "user.user" 4114 ] 4115 } 4116 }, 4117 { 4118 "comment": "delete with alias table", 4119 "query": "delete from user u where u.col > 20", 4120 "plan": { 4121 "QueryType": "DELETE", 4122 "Original": "delete from user u where u.col > 20", 4123 "Instructions": { 4124 "OperatorType": "Delete", 4125 "Variant": "Scatter", 4126 "Keyspace": { 4127 "Name": "user", 4128 "Sharded": true 4129 }, 4130 "TargetTabletType": "PRIMARY", 4131 "KsidLength": 1, 4132 "KsidVindex": "user_index", 4133 "MultiShardAutocommit": false, 4134 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` as u where u.col > 20 for update", 4135 "Query": "delete from `user` as u where u.col > 20", 4136 "Table": "user" 4137 }, 4138 "TablesUsed": [ 4139 "user.user" 4140 ] 4141 } 4142 }, 4143 { 4144 "comment": "update with a multicol vindex", 4145 "query": "update multicol_tbl set x = 1 where cola = 1 and colb = 2", 4146 "v3-plan": { 4147 "QueryType": "UPDATE", 4148 "Original": "update multicol_tbl set x = 1 where cola = 1 and colb = 2", 4149 "Instructions": { 4150 "OperatorType": "Update", 4151 "Variant": "Equal", 4152 "Keyspace": { 4153 "Name": "user", 4154 "Sharded": true 4155 }, 4156 "TargetTabletType": "PRIMARY", 4157 "MultiShardAutocommit": false, 4158 "Query": "update multicol_tbl set x = 1 where cola = 1 and colb = 2", 4159 "Table": "multicol_tbl", 4160 "Values": [ 4161 "INT64(1)", 4162 "INT64(2)" 4163 ], 4164 "Vindex": "multicolIdx" 4165 }, 4166 "TablesUsed": [ 4167 "user.multicol_tbl" 4168 ] 4169 }, 4170 "gen4-plan": { 4171 "QueryType": "UPDATE", 4172 "Original": "update multicol_tbl set x = 1 where cola = 1 and colb = 2", 4173 "Instructions": { 4174 "OperatorType": "Update", 4175 "Variant": "EqualUnique", 4176 "Keyspace": { 4177 "Name": "user", 4178 "Sharded": true 4179 }, 4180 "TargetTabletType": "PRIMARY", 4181 "MultiShardAutocommit": false, 4182 "Query": "update multicol_tbl set x = 1 where cola = 1 and colb = 2", 4183 "Table": "multicol_tbl", 4184 "Values": [ 4185 "INT64(1)", 4186 "INT64(2)" 4187 ], 4188 "Vindex": "multicolIdx" 4189 }, 4190 "TablesUsed": [ 4191 "user.multicol_tbl" 4192 ] 4193 } 4194 }, 4195 { 4196 "comment": "update with a multicol vindex - reverse order", 4197 "query": "update multicol_tbl set x = 1 where colb = 2 and cola = 1", 4198 "v3-plan": { 4199 "QueryType": "UPDATE", 4200 "Original": "update multicol_tbl set x = 1 where colb = 2 and cola = 1", 4201 "Instructions": { 4202 "OperatorType": "Update", 4203 "Variant": "Equal", 4204 "Keyspace": { 4205 "Name": "user", 4206 "Sharded": true 4207 }, 4208 "TargetTabletType": "PRIMARY", 4209 "MultiShardAutocommit": false, 4210 "Query": "update multicol_tbl set x = 1 where colb = 2 and cola = 1", 4211 "Table": "multicol_tbl", 4212 "Values": [ 4213 "INT64(1)", 4214 "INT64(2)" 4215 ], 4216 "Vindex": "multicolIdx" 4217 }, 4218 "TablesUsed": [ 4219 "user.multicol_tbl" 4220 ] 4221 }, 4222 "gen4-plan": { 4223 "QueryType": "UPDATE", 4224 "Original": "update multicol_tbl set x = 1 where colb = 2 and cola = 1", 4225 "Instructions": { 4226 "OperatorType": "Update", 4227 "Variant": "EqualUnique", 4228 "Keyspace": { 4229 "Name": "user", 4230 "Sharded": true 4231 }, 4232 "TargetTabletType": "PRIMARY", 4233 "MultiShardAutocommit": false, 4234 "Query": "update multicol_tbl set x = 1 where colb = 2 and cola = 1", 4235 "Table": "multicol_tbl", 4236 "Values": [ 4237 "INT64(1)", 4238 "INT64(2)" 4239 ], 4240 "Vindex": "multicolIdx" 4241 }, 4242 "TablesUsed": [ 4243 "user.multicol_tbl" 4244 ] 4245 } 4246 }, 4247 { 4248 "comment": "update with a multicol vindex using an IN clause", 4249 "query": "update multicol_tbl set x = 1 where colb IN (1,2) and cola = 1", 4250 "plan": { 4251 "QueryType": "UPDATE", 4252 "Original": "update multicol_tbl set x = 1 where colb IN (1,2) and cola = 1", 4253 "Instructions": { 4254 "OperatorType": "Update", 4255 "Variant": "IN", 4256 "Keyspace": { 4257 "Name": "user", 4258 "Sharded": true 4259 }, 4260 "TargetTabletType": "PRIMARY", 4261 "MultiShardAutocommit": false, 4262 "Query": "update multicol_tbl set x = 1 where colb in (1, 2) and cola = 1", 4263 "Table": "multicol_tbl", 4264 "Values": [ 4265 "INT64(1)", 4266 "(INT64(1), INT64(2))" 4267 ], 4268 "Vindex": "multicolIdx" 4269 }, 4270 "TablesUsed": [ 4271 "user.multicol_tbl" 4272 ] 4273 } 4274 }, 4275 { 4276 "comment": "update with a multicol vindex using an IN clause", 4277 "query": "update multicol_tbl set x = 1 where colb IN (1,2) and cola IN (3,4)", 4278 "plan": { 4279 "QueryType": "UPDATE", 4280 "Original": "update multicol_tbl set x = 1 where colb IN (1,2) and cola IN (3,4)", 4281 "Instructions": { 4282 "OperatorType": "Update", 4283 "Variant": "IN", 4284 "Keyspace": { 4285 "Name": "user", 4286 "Sharded": true 4287 }, 4288 "TargetTabletType": "PRIMARY", 4289 "MultiShardAutocommit": false, 4290 "Query": "update multicol_tbl set x = 1 where colb in (1, 2) and cola in (3, 4)", 4291 "Table": "multicol_tbl", 4292 "Values": [ 4293 "(INT64(3), INT64(4))", 4294 "(INT64(1), INT64(2))" 4295 ], 4296 "Vindex": "multicolIdx" 4297 }, 4298 "TablesUsed": [ 4299 "user.multicol_tbl" 4300 ] 4301 } 4302 }, 4303 { 4304 "comment": "delete with a multicol vindex", 4305 "query": "delete from multicol_tbl where cola = 1 and colb = 2", 4306 "v3-plan": { 4307 "QueryType": "DELETE", 4308 "Original": "delete from multicol_tbl where cola = 1 and colb = 2", 4309 "Instructions": { 4310 "OperatorType": "Delete", 4311 "Variant": "Equal", 4312 "Keyspace": { 4313 "Name": "user", 4314 "Sharded": true 4315 }, 4316 "TargetTabletType": "PRIMARY", 4317 "KsidLength": 2, 4318 "KsidVindex": "multicolIdx", 4319 "MultiShardAutocommit": false, 4320 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where cola = 1 and colb = 2 for update", 4321 "Query": "delete from multicol_tbl where cola = 1 and colb = 2", 4322 "Table": "multicol_tbl", 4323 "Values": [ 4324 "INT64(1)", 4325 "INT64(2)" 4326 ], 4327 "Vindex": "multicolIdx" 4328 }, 4329 "TablesUsed": [ 4330 "user.multicol_tbl" 4331 ] 4332 }, 4333 "gen4-plan": { 4334 "QueryType": "DELETE", 4335 "Original": "delete from multicol_tbl where cola = 1 and colb = 2", 4336 "Instructions": { 4337 "OperatorType": "Delete", 4338 "Variant": "EqualUnique", 4339 "Keyspace": { 4340 "Name": "user", 4341 "Sharded": true 4342 }, 4343 "TargetTabletType": "PRIMARY", 4344 "KsidLength": 2, 4345 "KsidVindex": "multicolIdx", 4346 "MultiShardAutocommit": false, 4347 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where cola = 1 and colb = 2 for update", 4348 "Query": "delete from multicol_tbl where cola = 1 and colb = 2", 4349 "Table": "multicol_tbl", 4350 "Values": [ 4351 "INT64(1)", 4352 "INT64(2)" 4353 ], 4354 "Vindex": "multicolIdx" 4355 }, 4356 "TablesUsed": [ 4357 "user.multicol_tbl" 4358 ] 4359 } 4360 }, 4361 { 4362 "comment": "delete with a multicol vindex - reverse order", 4363 "query": "delete from multicol_tbl where colb = 2 and cola = 1", 4364 "v3-plan": { 4365 "QueryType": "DELETE", 4366 "Original": "delete from multicol_tbl where colb = 2 and cola = 1", 4367 "Instructions": { 4368 "OperatorType": "Delete", 4369 "Variant": "Equal", 4370 "Keyspace": { 4371 "Name": "user", 4372 "Sharded": true 4373 }, 4374 "TargetTabletType": "PRIMARY", 4375 "KsidLength": 2, 4376 "KsidVindex": "multicolIdx", 4377 "MultiShardAutocommit": false, 4378 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where colb = 2 and cola = 1 for update", 4379 "Query": "delete from multicol_tbl where colb = 2 and cola = 1", 4380 "Table": "multicol_tbl", 4381 "Values": [ 4382 "INT64(1)", 4383 "INT64(2)" 4384 ], 4385 "Vindex": "multicolIdx" 4386 }, 4387 "TablesUsed": [ 4388 "user.multicol_tbl" 4389 ] 4390 }, 4391 "gen4-plan": { 4392 "QueryType": "DELETE", 4393 "Original": "delete from multicol_tbl where colb = 2 and cola = 1", 4394 "Instructions": { 4395 "OperatorType": "Delete", 4396 "Variant": "EqualUnique", 4397 "Keyspace": { 4398 "Name": "user", 4399 "Sharded": true 4400 }, 4401 "TargetTabletType": "PRIMARY", 4402 "KsidLength": 2, 4403 "KsidVindex": "multicolIdx", 4404 "MultiShardAutocommit": false, 4405 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where colb = 2 and cola = 1 for update", 4406 "Query": "delete from multicol_tbl where colb = 2 and cola = 1", 4407 "Table": "multicol_tbl", 4408 "Values": [ 4409 "INT64(1)", 4410 "INT64(2)" 4411 ], 4412 "Vindex": "multicolIdx" 4413 }, 4414 "TablesUsed": [ 4415 "user.multicol_tbl" 4416 ] 4417 } 4418 }, 4419 { 4420 "comment": "delete with a multicol vindex using an IN clause", 4421 "query": "delete from multicol_tbl where colb IN (1,2) and cola = 1", 4422 "plan": { 4423 "QueryType": "DELETE", 4424 "Original": "delete from multicol_tbl where colb IN (1,2) and cola = 1", 4425 "Instructions": { 4426 "OperatorType": "Delete", 4427 "Variant": "IN", 4428 "Keyspace": { 4429 "Name": "user", 4430 "Sharded": true 4431 }, 4432 "TargetTabletType": "PRIMARY", 4433 "KsidLength": 2, 4434 "KsidVindex": "multicolIdx", 4435 "MultiShardAutocommit": false, 4436 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where colb in (1, 2) and cola = 1 for update", 4437 "Query": "delete from multicol_tbl where colb in (1, 2) and cola = 1", 4438 "Table": "multicol_tbl", 4439 "Values": [ 4440 "INT64(1)", 4441 "(INT64(1), INT64(2))" 4442 ], 4443 "Vindex": "multicolIdx" 4444 }, 4445 "TablesUsed": [ 4446 "user.multicol_tbl" 4447 ] 4448 } 4449 }, 4450 { 4451 "comment": "delete with a multicol vindex using an IN clause", 4452 "query": "delete from multicol_tbl where colb IN (1,2) and cola IN (3,4)", 4453 "plan": { 4454 "QueryType": "DELETE", 4455 "Original": "delete from multicol_tbl where colb IN (1,2) and cola IN (3,4)", 4456 "Instructions": { 4457 "OperatorType": "Delete", 4458 "Variant": "IN", 4459 "Keyspace": { 4460 "Name": "user", 4461 "Sharded": true 4462 }, 4463 "TargetTabletType": "PRIMARY", 4464 "KsidLength": 2, 4465 "KsidVindex": "multicolIdx", 4466 "MultiShardAutocommit": false, 4467 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where colb in (1, 2) and cola in (3, 4) for update", 4468 "Query": "delete from multicol_tbl where colb in (1, 2) and cola in (3, 4)", 4469 "Table": "multicol_tbl", 4470 "Values": [ 4471 "(INT64(3), INT64(4))", 4472 "(INT64(1), INT64(2))" 4473 ], 4474 "Vindex": "multicolIdx" 4475 }, 4476 "TablesUsed": [ 4477 "user.multicol_tbl" 4478 ] 4479 } 4480 }, 4481 { 4482 "comment": "update with multicol and an owned vindex which changes", 4483 "query": "update multicol_tbl set colc = 1 where cola = 1 and colb = 2", 4484 "v3-plan": { 4485 "QueryType": "UPDATE", 4486 "Original": "update multicol_tbl set colc = 1 where cola = 1 and colb = 2", 4487 "Instructions": { 4488 "OperatorType": "Update", 4489 "Variant": "Equal", 4490 "Keyspace": { 4491 "Name": "user", 4492 "Sharded": true 4493 }, 4494 "TargetTabletType": "PRIMARY", 4495 "ChangedVindexValues": [ 4496 "colc_map:4" 4497 ], 4498 "KsidLength": 2, 4499 "KsidVindex": "multicolIdx", 4500 "MultiShardAutocommit": false, 4501 "OwnedVindexQuery": "select cola, colb, colc, `name`, colc = 1 from multicol_tbl where cola = 1 and colb = 2 for update", 4502 "Query": "update multicol_tbl set colc = 1 where cola = 1 and colb = 2", 4503 "Table": "multicol_tbl", 4504 "Values": [ 4505 "INT64(1)", 4506 "INT64(2)" 4507 ], 4508 "Vindex": "multicolIdx" 4509 }, 4510 "TablesUsed": [ 4511 "user.multicol_tbl" 4512 ] 4513 }, 4514 "gen4-plan": { 4515 "QueryType": "UPDATE", 4516 "Original": "update multicol_tbl set colc = 1 where cola = 1 and colb = 2", 4517 "Instructions": { 4518 "OperatorType": "Update", 4519 "Variant": "EqualUnique", 4520 "Keyspace": { 4521 "Name": "user", 4522 "Sharded": true 4523 }, 4524 "TargetTabletType": "PRIMARY", 4525 "ChangedVindexValues": [ 4526 "colc_map:4" 4527 ], 4528 "KsidLength": 2, 4529 "KsidVindex": "multicolIdx", 4530 "MultiShardAutocommit": false, 4531 "OwnedVindexQuery": "select cola, colb, colc, `name`, colc = 1 from multicol_tbl where cola = 1 and colb = 2 for update", 4532 "Query": "update multicol_tbl set colc = 1 where cola = 1 and colb = 2", 4533 "Table": "multicol_tbl", 4534 "Values": [ 4535 "INT64(1)", 4536 "INT64(2)" 4537 ], 4538 "Vindex": "multicolIdx" 4539 }, 4540 "TablesUsed": [ 4541 "user.multicol_tbl" 4542 ] 4543 } 4544 }, 4545 { 4546 "comment": "update with routing using non-unique lookup vindex", 4547 "query": "update multicol_tbl set x = 42 where name = 'foo'", 4548 "plan": { 4549 "QueryType": "UPDATE", 4550 "Original": "update multicol_tbl set x = 42 where name = 'foo'", 4551 "Instructions": { 4552 "OperatorType": "Update", 4553 "Variant": "Equal", 4554 "Keyspace": { 4555 "Name": "user", 4556 "Sharded": true 4557 }, 4558 "TargetTabletType": "PRIMARY", 4559 "MultiShardAutocommit": false, 4560 "Query": "update multicol_tbl set x = 42 where `name` = 'foo'", 4561 "Table": "multicol_tbl", 4562 "Values": [ 4563 "VARCHAR(\"foo\")" 4564 ], 4565 "Vindex": "name_muticoltbl_map" 4566 }, 4567 "TablesUsed": [ 4568 "user.multicol_tbl" 4569 ] 4570 } 4571 }, 4572 { 4573 "comment": "update with routing using subsharding column", 4574 "query": "update multicol_tbl set x = 42 where cola = 1", 4575 "v3-plan": { 4576 "QueryType": "UPDATE", 4577 "Original": "update multicol_tbl set x = 42 where cola = 1", 4578 "Instructions": { 4579 "OperatorType": "Update", 4580 "Variant": "Equal", 4581 "Keyspace": { 4582 "Name": "user", 4583 "Sharded": true 4584 }, 4585 "TargetTabletType": "PRIMARY", 4586 "MultiShardAutocommit": false, 4587 "Query": "update multicol_tbl set x = 42 where cola = 1", 4588 "Table": "multicol_tbl", 4589 "Values": [ 4590 "INT64(1)" 4591 ], 4592 "Vindex": "multicolIdx" 4593 }, 4594 "TablesUsed": [ 4595 "user.multicol_tbl" 4596 ] 4597 }, 4598 "gen4-plan": { 4599 "QueryType": "UPDATE", 4600 "Original": "update multicol_tbl set x = 42 where cola = 1", 4601 "Instructions": { 4602 "OperatorType": "Update", 4603 "Variant": "SubShard", 4604 "Keyspace": { 4605 "Name": "user", 4606 "Sharded": true 4607 }, 4608 "TargetTabletType": "PRIMARY", 4609 "MultiShardAutocommit": false, 4610 "Query": "update multicol_tbl set x = 42 where cola = 1", 4611 "Table": "multicol_tbl", 4612 "Values": [ 4613 "INT64(1)" 4614 ], 4615 "Vindex": "multicolIdx" 4616 }, 4617 "TablesUsed": [ 4618 "user.multicol_tbl" 4619 ] 4620 } 4621 }, 4622 { 4623 "comment": "update with routing using subsharding column on lookup vindex", 4624 "query": "update multicol_tbl set name = 'bar' where cola = 1", 4625 "v3-plan": { 4626 "QueryType": "UPDATE", 4627 "Original": "update multicol_tbl set name = 'bar' where cola = 1", 4628 "Instructions": { 4629 "OperatorType": "Update", 4630 "Variant": "Equal", 4631 "Keyspace": { 4632 "Name": "user", 4633 "Sharded": true 4634 }, 4635 "TargetTabletType": "PRIMARY", 4636 "ChangedVindexValues": [ 4637 "name_muticoltbl_map:4" 4638 ], 4639 "KsidLength": 2, 4640 "KsidVindex": "multicolIdx", 4641 "MultiShardAutocommit": false, 4642 "OwnedVindexQuery": "select cola, colb, colc, `name`, `name` = 'bar' from multicol_tbl where cola = 1 for update", 4643 "Query": "update multicol_tbl set `name` = 'bar' where cola = 1", 4644 "Table": "multicol_tbl", 4645 "Values": [ 4646 "INT64(1)" 4647 ], 4648 "Vindex": "multicolIdx" 4649 }, 4650 "TablesUsed": [ 4651 "user.multicol_tbl" 4652 ] 4653 }, 4654 "gen4-plan": { 4655 "QueryType": "UPDATE", 4656 "Original": "update multicol_tbl set name = 'bar' where cola = 1", 4657 "Instructions": { 4658 "OperatorType": "Update", 4659 "Variant": "SubShard", 4660 "Keyspace": { 4661 "Name": "user", 4662 "Sharded": true 4663 }, 4664 "TargetTabletType": "PRIMARY", 4665 "ChangedVindexValues": [ 4666 "name_muticoltbl_map:4" 4667 ], 4668 "KsidLength": 2, 4669 "KsidVindex": "multicolIdx", 4670 "MultiShardAutocommit": false, 4671 "OwnedVindexQuery": "select cola, colb, colc, `name`, `name` = 'bar' from multicol_tbl where cola = 1 for update", 4672 "Query": "update multicol_tbl set `name` = 'bar' where cola = 1", 4673 "Table": "multicol_tbl", 4674 "Values": [ 4675 "INT64(1)" 4676 ], 4677 "Vindex": "multicolIdx" 4678 }, 4679 "TablesUsed": [ 4680 "user.multicol_tbl" 4681 ] 4682 } 4683 }, 4684 { 4685 "comment": "update with routing using subsharding column with in query", 4686 "query": "update multicol_tbl set name = 'bar' where cola in (1,2)", 4687 "plan": { 4688 "QueryType": "UPDATE", 4689 "Original": "update multicol_tbl set name = 'bar' where cola in (1,2)", 4690 "Instructions": { 4691 "OperatorType": "Update", 4692 "Variant": "IN", 4693 "Keyspace": { 4694 "Name": "user", 4695 "Sharded": true 4696 }, 4697 "TargetTabletType": "PRIMARY", 4698 "ChangedVindexValues": [ 4699 "name_muticoltbl_map:4" 4700 ], 4701 "KsidLength": 2, 4702 "KsidVindex": "multicolIdx", 4703 "MultiShardAutocommit": false, 4704 "OwnedVindexQuery": "select cola, colb, colc, `name`, `name` = 'bar' from multicol_tbl where cola in (1, 2) for update", 4705 "Query": "update multicol_tbl set `name` = 'bar' where cola in (1, 2)", 4706 "Table": "multicol_tbl", 4707 "Values": [ 4708 "(INT64(1), INT64(2))" 4709 ], 4710 "Vindex": "multicolIdx" 4711 }, 4712 "TablesUsed": [ 4713 "user.multicol_tbl" 4714 ] 4715 } 4716 }, 4717 { 4718 "comment": "update with routing using subsharding column with in query as lower cost over lookup vindex", 4719 "query": "update multicol_tbl set x = 1 where name = 'foo' and cola = 2", 4720 "v3-plan": { 4721 "QueryType": "UPDATE", 4722 "Original": "update multicol_tbl set x = 1 where name = 'foo' and cola = 2", 4723 "Instructions": { 4724 "OperatorType": "Update", 4725 "Variant": "Equal", 4726 "Keyspace": { 4727 "Name": "user", 4728 "Sharded": true 4729 }, 4730 "TargetTabletType": "PRIMARY", 4731 "MultiShardAutocommit": false, 4732 "Query": "update multicol_tbl set x = 1 where `name` = 'foo' and cola = 2", 4733 "Table": "multicol_tbl", 4734 "Values": [ 4735 "INT64(2)" 4736 ], 4737 "Vindex": "multicolIdx" 4738 }, 4739 "TablesUsed": [ 4740 "user.multicol_tbl" 4741 ] 4742 }, 4743 "gen4-plan": { 4744 "QueryType": "UPDATE", 4745 "Original": "update multicol_tbl set x = 1 where name = 'foo' and cola = 2", 4746 "Instructions": { 4747 "OperatorType": "Update", 4748 "Variant": "Equal", 4749 "Keyspace": { 4750 "Name": "user", 4751 "Sharded": true 4752 }, 4753 "TargetTabletType": "PRIMARY", 4754 "MultiShardAutocommit": false, 4755 "Query": "update multicol_tbl set x = 1 where `name` = 'foo' and cola = 2", 4756 "Table": "multicol_tbl", 4757 "Values": [ 4758 "VARCHAR(\"foo\")" 4759 ], 4760 "Vindex": "name_muticoltbl_map" 4761 }, 4762 "TablesUsed": [ 4763 "user.multicol_tbl" 4764 ] 4765 } 4766 }, 4767 { 4768 "comment": "delete with routing using non-unique lookup vindex", 4769 "query": "delete from multicol_tbl where name = 'foo'", 4770 "plan": { 4771 "QueryType": "DELETE", 4772 "Original": "delete from multicol_tbl where name = 'foo'", 4773 "Instructions": { 4774 "OperatorType": "Delete", 4775 "Variant": "Equal", 4776 "Keyspace": { 4777 "Name": "user", 4778 "Sharded": true 4779 }, 4780 "TargetTabletType": "PRIMARY", 4781 "KsidLength": 2, 4782 "KsidVindex": "multicolIdx", 4783 "MultiShardAutocommit": false, 4784 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where `name` = 'foo' for update", 4785 "Query": "delete from multicol_tbl where `name` = 'foo'", 4786 "Table": "multicol_tbl", 4787 "Values": [ 4788 "VARCHAR(\"foo\")" 4789 ], 4790 "Vindex": "name_muticoltbl_map" 4791 }, 4792 "TablesUsed": [ 4793 "user.multicol_tbl" 4794 ] 4795 } 4796 }, 4797 { 4798 "comment": "delete with routing using subsharding column", 4799 "query": "delete from multicol_tbl where cola = 1", 4800 "v3-plan": { 4801 "QueryType": "DELETE", 4802 "Original": "delete from multicol_tbl where cola = 1", 4803 "Instructions": { 4804 "OperatorType": "Delete", 4805 "Variant": "Equal", 4806 "Keyspace": { 4807 "Name": "user", 4808 "Sharded": true 4809 }, 4810 "TargetTabletType": "PRIMARY", 4811 "KsidLength": 2, 4812 "KsidVindex": "multicolIdx", 4813 "MultiShardAutocommit": false, 4814 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where cola = 1 for update", 4815 "Query": "delete from multicol_tbl where cola = 1", 4816 "Table": "multicol_tbl", 4817 "Values": [ 4818 "INT64(1)" 4819 ], 4820 "Vindex": "multicolIdx" 4821 }, 4822 "TablesUsed": [ 4823 "user.multicol_tbl" 4824 ] 4825 }, 4826 "gen4-plan": { 4827 "QueryType": "DELETE", 4828 "Original": "delete from multicol_tbl where cola = 1", 4829 "Instructions": { 4830 "OperatorType": "Delete", 4831 "Variant": "SubShard", 4832 "Keyspace": { 4833 "Name": "user", 4834 "Sharded": true 4835 }, 4836 "TargetTabletType": "PRIMARY", 4837 "KsidLength": 2, 4838 "KsidVindex": "multicolIdx", 4839 "MultiShardAutocommit": false, 4840 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where cola = 1 for update", 4841 "Query": "delete from multicol_tbl where cola = 1", 4842 "Table": "multicol_tbl", 4843 "Values": [ 4844 "INT64(1)" 4845 ], 4846 "Vindex": "multicolIdx" 4847 }, 4848 "TablesUsed": [ 4849 "user.multicol_tbl" 4850 ] 4851 } 4852 }, 4853 { 4854 "comment": "delete with routing using subsharding column with in query", 4855 "query": "delete from multicol_tbl where cola in (1,2)", 4856 "plan": { 4857 "QueryType": "DELETE", 4858 "Original": "delete from multicol_tbl where cola in (1,2)", 4859 "Instructions": { 4860 "OperatorType": "Delete", 4861 "Variant": "IN", 4862 "Keyspace": { 4863 "Name": "user", 4864 "Sharded": true 4865 }, 4866 "TargetTabletType": "PRIMARY", 4867 "KsidLength": 2, 4868 "KsidVindex": "multicolIdx", 4869 "MultiShardAutocommit": false, 4870 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where cola in (1, 2) for update", 4871 "Query": "delete from multicol_tbl where cola in (1, 2)", 4872 "Table": "multicol_tbl", 4873 "Values": [ 4874 "(INT64(1), INT64(2))" 4875 ], 4876 "Vindex": "multicolIdx" 4877 }, 4878 "TablesUsed": [ 4879 "user.multicol_tbl" 4880 ] 4881 } 4882 }, 4883 { 4884 "comment": "delete with routing using subsharding column with in query as lower cost over lookup vindex", 4885 "query": "delete from multicol_tbl where name = 'foo' and cola = 2", 4886 "v3-plan": { 4887 "QueryType": "DELETE", 4888 "Original": "delete from multicol_tbl where name = 'foo' and cola = 2", 4889 "Instructions": { 4890 "OperatorType": "Delete", 4891 "Variant": "Equal", 4892 "Keyspace": { 4893 "Name": "user", 4894 "Sharded": true 4895 }, 4896 "TargetTabletType": "PRIMARY", 4897 "KsidLength": 2, 4898 "KsidVindex": "multicolIdx", 4899 "MultiShardAutocommit": false, 4900 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where `name` = 'foo' and cola = 2 for update", 4901 "Query": "delete from multicol_tbl where `name` = 'foo' and cola = 2", 4902 "Table": "multicol_tbl", 4903 "Values": [ 4904 "INT64(2)" 4905 ], 4906 "Vindex": "multicolIdx" 4907 }, 4908 "TablesUsed": [ 4909 "user.multicol_tbl" 4910 ] 4911 }, 4912 "gen4-plan": { 4913 "QueryType": "DELETE", 4914 "Original": "delete from multicol_tbl where name = 'foo' and cola = 2", 4915 "Instructions": { 4916 "OperatorType": "Delete", 4917 "Variant": "Equal", 4918 "Keyspace": { 4919 "Name": "user", 4920 "Sharded": true 4921 }, 4922 "TargetTabletType": "PRIMARY", 4923 "KsidLength": 2, 4924 "KsidVindex": "multicolIdx", 4925 "MultiShardAutocommit": false, 4926 "OwnedVindexQuery": "select cola, colb, colc, `name` from multicol_tbl where `name` = 'foo' and cola = 2 for update", 4927 "Query": "delete from multicol_tbl where `name` = 'foo' and cola = 2", 4928 "Table": "multicol_tbl", 4929 "Values": [ 4930 "VARCHAR(\"foo\")" 4931 ], 4932 "Vindex": "name_muticoltbl_map" 4933 }, 4934 "TablesUsed": [ 4935 "user.multicol_tbl" 4936 ] 4937 } 4938 }, 4939 { 4940 "comment": "insert using select with simple table.", 4941 "query": "insert into music(id, user_id) select * from user", 4942 "v3-plan": { 4943 "QueryType": "INSERT", 4944 "Original": "insert into music(id, user_id) select * from user", 4945 "Instructions": { 4946 "OperatorType": "Insert", 4947 "Variant": "Select", 4948 "Keyspace": { 4949 "Name": "user", 4950 "Sharded": true 4951 }, 4952 "TargetTabletType": "PRIMARY", 4953 "MultiShardAutocommit": false, 4954 "TableName": "music", 4955 "VindexOffsetFromSelect": { 4956 "music_user_map": "[0]", 4957 "user_index": "[1]" 4958 }, 4959 "Inputs": [ 4960 { 4961 "OperatorType": "Route", 4962 "Variant": "Scatter", 4963 "Keyspace": { 4964 "Name": "user", 4965 "Sharded": true 4966 }, 4967 "FieldQuery": "select * from `user` where 1 != 1", 4968 "Query": "select * from `user` for update", 4969 "Table": "`user`" 4970 } 4971 ] 4972 }, 4973 "TablesUsed": [ 4974 "user.music" 4975 ] 4976 }, 4977 "gen4-plan": { 4978 "QueryType": "INSERT", 4979 "Original": "insert into music(id, user_id) select * from user", 4980 "Instructions": { 4981 "OperatorType": "Insert", 4982 "Variant": "Select", 4983 "Keyspace": { 4984 "Name": "user", 4985 "Sharded": true 4986 }, 4987 "TargetTabletType": "PRIMARY", 4988 "MultiShardAutocommit": false, 4989 "TableName": "music", 4990 "VindexOffsetFromSelect": { 4991 "music_user_map": "[0]", 4992 "user_index": "[1]" 4993 }, 4994 "Inputs": [ 4995 { 4996 "OperatorType": "Route", 4997 "Variant": "Scatter", 4998 "Keyspace": { 4999 "Name": "user", 5000 "Sharded": true 5001 }, 5002 "FieldQuery": "select * from `user` where 1 != 1", 5003 "Query": "select * from `user` for update", 5004 "Table": "`user`" 5005 } 5006 ] 5007 }, 5008 "TablesUsed": [ 5009 "user.music", 5010 "user.user" 5011 ] 5012 } 5013 }, 5014 { 5015 "comment": "insert using select with more columns in insert", 5016 "query": "insert into music(id, user_id) select 1", 5017 "plan": "VT03006: column count does not match value count at row 1" 5018 }, 5019 { 5020 "comment": "insert using select with more columns in select", 5021 "query": "insert into music(id, user_id) select id, count(user_id), sum(user_id) from user group by id", 5022 "plan": "VT03006: column count does not match value count at row 1" 5023 }, 5024 { 5025 "comment": "insert using select with more columns in select after accounting for star column", 5026 "query": "insert into music(id, user_id) select id, *, 2 from user", 5027 "plan": "VT03006: column count does not match value count at row 1" 5028 }, 5029 { 5030 "comment": "insert using select with auto-inc column using vitess sequence, sequence column not present", 5031 "query": "insert into user_extra(user_id) select id from user", 5032 "v3-plan": { 5033 "QueryType": "INSERT", 5034 "Original": "insert into user_extra(user_id) select id from user", 5035 "Instructions": { 5036 "OperatorType": "Insert", 5037 "Variant": "Select", 5038 "Keyspace": { 5039 "Name": "user", 5040 "Sharded": true 5041 }, 5042 "TargetTabletType": "PRIMARY", 5043 "AutoIncrement": "main:1", 5044 "MultiShardAutocommit": false, 5045 "TableName": "user_extra", 5046 "VindexOffsetFromSelect": { 5047 "user_index": "[0]" 5048 }, 5049 "Inputs": [ 5050 { 5051 "OperatorType": "Route", 5052 "Variant": "Scatter", 5053 "Keyspace": { 5054 "Name": "user", 5055 "Sharded": true 5056 }, 5057 "FieldQuery": "select id from `user` where 1 != 1", 5058 "Query": "select id from `user` for update", 5059 "Table": "`user`" 5060 } 5061 ] 5062 }, 5063 "TablesUsed": [ 5064 "user.user_extra" 5065 ] 5066 }, 5067 "gen4-plan": { 5068 "QueryType": "INSERT", 5069 "Original": "insert into user_extra(user_id) select id from user", 5070 "Instructions": { 5071 "OperatorType": "Insert", 5072 "Variant": "Select", 5073 "Keyspace": { 5074 "Name": "user", 5075 "Sharded": true 5076 }, 5077 "TargetTabletType": "PRIMARY", 5078 "AutoIncrement": "main:1", 5079 "MultiShardAutocommit": false, 5080 "TableName": "user_extra", 5081 "VindexOffsetFromSelect": { 5082 "user_index": "[0]" 5083 }, 5084 "Inputs": [ 5085 { 5086 "OperatorType": "Route", 5087 "Variant": "Scatter", 5088 "Keyspace": { 5089 "Name": "user", 5090 "Sharded": true 5091 }, 5092 "FieldQuery": "select id from `user` where 1 != 1", 5093 "Query": "select id from `user` for update", 5094 "Table": "`user`" 5095 } 5096 ] 5097 }, 5098 "TablesUsed": [ 5099 "user.user", 5100 "user.user_extra" 5101 ] 5102 } 5103 }, 5104 { 5105 "comment": "insert using select with auto-inc column using vitess sequence, sequence column present", 5106 "query": "insert into user_extra(id, user_id) select null, id from user", 5107 "v3-plan": { 5108 "QueryType": "INSERT", 5109 "Original": "insert into user_extra(id, user_id) select null, id from user", 5110 "Instructions": { 5111 "OperatorType": "Insert", 5112 "Variant": "Select", 5113 "Keyspace": { 5114 "Name": "user", 5115 "Sharded": true 5116 }, 5117 "TargetTabletType": "PRIMARY", 5118 "AutoIncrement": "main:2", 5119 "MultiShardAutocommit": false, 5120 "TableName": "user_extra", 5121 "VindexOffsetFromSelect": { 5122 "user_index": "[1]" 5123 }, 5124 "Inputs": [ 5125 { 5126 "OperatorType": "Route", 5127 "Variant": "Scatter", 5128 "Keyspace": { 5129 "Name": "user", 5130 "Sharded": true 5131 }, 5132 "FieldQuery": "select null, id from `user` where 1 != 1", 5133 "Query": "select null, id from `user` for update", 5134 "Table": "`user`" 5135 } 5136 ] 5137 }, 5138 "TablesUsed": [ 5139 "user.user_extra" 5140 ] 5141 }, 5142 "gen4-plan": { 5143 "QueryType": "INSERT", 5144 "Original": "insert into user_extra(id, user_id) select null, id from user", 5145 "Instructions": { 5146 "OperatorType": "Insert", 5147 "Variant": "Select", 5148 "Keyspace": { 5149 "Name": "user", 5150 "Sharded": true 5151 }, 5152 "TargetTabletType": "PRIMARY", 5153 "AutoIncrement": "main:2", 5154 "MultiShardAutocommit": false, 5155 "TableName": "user_extra", 5156 "VindexOffsetFromSelect": { 5157 "user_index": "[1]" 5158 }, 5159 "Inputs": [ 5160 { 5161 "OperatorType": "Route", 5162 "Variant": "Scatter", 5163 "Keyspace": { 5164 "Name": "user", 5165 "Sharded": true 5166 }, 5167 "FieldQuery": "select null, id from `user` where 1 != 1", 5168 "Query": "select null, id from `user` for update", 5169 "Table": "`user`" 5170 } 5171 ] 5172 }, 5173 "TablesUsed": [ 5174 "user.user", 5175 "user.user_extra" 5176 ] 5177 } 5178 }, 5179 { 5180 "comment": "sharded insert from select", 5181 "query": "insert into user(id) select 1 from dual", 5182 "v3-plan": { 5183 "QueryType": "INSERT", 5184 "Original": "insert into user(id) select 1 from dual", 5185 "Instructions": { 5186 "OperatorType": "Insert", 5187 "Variant": "Select", 5188 "Keyspace": { 5189 "Name": "user", 5190 "Sharded": true 5191 }, 5192 "TargetTabletType": "PRIMARY", 5193 "AutoIncrement": "main:0", 5194 "MultiShardAutocommit": false, 5195 "TableName": "user", 5196 "VindexOffsetFromSelect": { 5197 "costly_map": "[-1]", 5198 "name_user_map": "[-1]", 5199 "user_index": "[0]" 5200 }, 5201 "Inputs": [ 5202 { 5203 "OperatorType": "Projection", 5204 "Expressions": [ 5205 "INT64(1) as 1" 5206 ], 5207 "Inputs": [ 5208 { 5209 "OperatorType": "SingleRow" 5210 } 5211 ] 5212 } 5213 ] 5214 }, 5215 "TablesUsed": [ 5216 "user.user" 5217 ] 5218 }, 5219 "gen4-plan": { 5220 "QueryType": "INSERT", 5221 "Original": "insert into user(id) select 1 from dual", 5222 "Instructions": { 5223 "OperatorType": "Insert", 5224 "Variant": "Select", 5225 "Keyspace": { 5226 "Name": "user", 5227 "Sharded": true 5228 }, 5229 "TargetTabletType": "PRIMARY", 5230 "AutoIncrement": "main:0", 5231 "MultiShardAutocommit": false, 5232 "TableName": "user", 5233 "VindexOffsetFromSelect": { 5234 "costly_map": "[-1]", 5235 "name_user_map": "[-1]", 5236 "user_index": "[0]" 5237 }, 5238 "Inputs": [ 5239 { 5240 "OperatorType": "Projection", 5241 "Expressions": [ 5242 "INT64(1) as 1" 5243 ], 5244 "Inputs": [ 5245 { 5246 "OperatorType": "SingleRow" 5247 } 5248 ] 5249 } 5250 ] 5251 }, 5252 "TablesUsed": [ 5253 "main.dual", 5254 "user.user" 5255 ] 5256 } 5257 }, 5258 { 5259 "comment": "insert using select with sharding column is autoinc and not present in the insert column query", 5260 "query": "insert into user(pattern) SELECT 1", 5261 "v3-plan": { 5262 "QueryType": "INSERT", 5263 "Original": "insert into user(pattern) SELECT 1", 5264 "Instructions": { 5265 "OperatorType": "Insert", 5266 "Variant": "Select", 5267 "Keyspace": { 5268 "Name": "user", 5269 "Sharded": true 5270 }, 5271 "TargetTabletType": "PRIMARY", 5272 "AutoIncrement": "main:1", 5273 "MultiShardAutocommit": false, 5274 "TableName": "user", 5275 "VindexOffsetFromSelect": { 5276 "costly_map": "[-1]", 5277 "name_user_map": "[-1]", 5278 "user_index": "[1]" 5279 }, 5280 "Inputs": [ 5281 { 5282 "OperatorType": "Projection", 5283 "Expressions": [ 5284 "INT64(1) as 1" 5285 ], 5286 "Inputs": [ 5287 { 5288 "OperatorType": "SingleRow" 5289 } 5290 ] 5291 } 5292 ] 5293 }, 5294 "TablesUsed": [ 5295 "user.user" 5296 ] 5297 }, 5298 "gen4-plan": { 5299 "QueryType": "INSERT", 5300 "Original": "insert into user(pattern) SELECT 1", 5301 "Instructions": { 5302 "OperatorType": "Insert", 5303 "Variant": "Select", 5304 "Keyspace": { 5305 "Name": "user", 5306 "Sharded": true 5307 }, 5308 "TargetTabletType": "PRIMARY", 5309 "AutoIncrement": "main:1", 5310 "MultiShardAutocommit": false, 5311 "TableName": "user", 5312 "VindexOffsetFromSelect": { 5313 "costly_map": "[-1]", 5314 "name_user_map": "[-1]", 5315 "user_index": "[1]" 5316 }, 5317 "Inputs": [ 5318 { 5319 "OperatorType": "Projection", 5320 "Expressions": [ 5321 "INT64(1) as 1" 5322 ], 5323 "Inputs": [ 5324 { 5325 "OperatorType": "SingleRow" 5326 } 5327 ] 5328 } 5329 ] 5330 }, 5331 "TablesUsed": [ 5332 "main.dual", 5333 "user.user" 5334 ] 5335 } 5336 }, 5337 { 5338 "comment": "insert using select with sharding column is not an autoinc and not present in the insert column query", 5339 "query": "insert into user_extra(pattern) SELECT 1", 5340 "plan": "VT09003: INSERT query does not have primary vindex column 'user_id' in the column list" 5341 }, 5342 { 5343 "comment": "sharded same keyspace", 5344 "query": "insert into user_extra(user_id, col) select col1, col2 from user", 5345 "v3-plan": { 5346 "QueryType": "INSERT", 5347 "Original": "insert into user_extra(user_id, col) select col1, col2 from user", 5348 "Instructions": { 5349 "OperatorType": "Insert", 5350 "Variant": "Select", 5351 "Keyspace": { 5352 "Name": "user", 5353 "Sharded": true 5354 }, 5355 "TargetTabletType": "PRIMARY", 5356 "AutoIncrement": "main:2", 5357 "MultiShardAutocommit": false, 5358 "TableName": "user_extra", 5359 "VindexOffsetFromSelect": { 5360 "user_index": "[0]" 5361 }, 5362 "Inputs": [ 5363 { 5364 "OperatorType": "Route", 5365 "Variant": "Scatter", 5366 "Keyspace": { 5367 "Name": "user", 5368 "Sharded": true 5369 }, 5370 "FieldQuery": "select col1, col2 from `user` where 1 != 1", 5371 "Query": "select col1, col2 from `user` for update", 5372 "Table": "`user`" 5373 } 5374 ] 5375 }, 5376 "TablesUsed": [ 5377 "user.user_extra" 5378 ] 5379 }, 5380 "gen4-plan": { 5381 "QueryType": "INSERT", 5382 "Original": "insert into user_extra(user_id, col) select col1, col2 from user", 5383 "Instructions": { 5384 "OperatorType": "Insert", 5385 "Variant": "Select", 5386 "Keyspace": { 5387 "Name": "user", 5388 "Sharded": true 5389 }, 5390 "TargetTabletType": "PRIMARY", 5391 "AutoIncrement": "main:2", 5392 "MultiShardAutocommit": false, 5393 "TableName": "user_extra", 5394 "VindexOffsetFromSelect": { 5395 "user_index": "[0]" 5396 }, 5397 "Inputs": [ 5398 { 5399 "OperatorType": "Route", 5400 "Variant": "Scatter", 5401 "Keyspace": { 5402 "Name": "user", 5403 "Sharded": true 5404 }, 5405 "FieldQuery": "select col1, col2 from `user` where 1 != 1", 5406 "Query": "select col1, col2 from `user` for update", 5407 "Table": "`user`" 5408 } 5409 ] 5410 }, 5411 "TablesUsed": [ 5412 "user.user", 5413 "user.user_extra" 5414 ] 5415 } 5416 }, 5417 { 5418 "comment": "unsharded same keyspace", 5419 "query": "insert into unsharded(col) select col from unsharded_auto", 5420 "v3-plan": { 5421 "QueryType": "INSERT", 5422 "Original": "insert into unsharded(col) select col from unsharded_auto", 5423 "Instructions": { 5424 "OperatorType": "Insert", 5425 "Variant": "Unsharded", 5426 "Keyspace": { 5427 "Name": "main", 5428 "Sharded": false 5429 }, 5430 "TargetTabletType": "PRIMARY", 5431 "MultiShardAutocommit": false, 5432 "Query": "insert into unsharded(col) select col from unsharded_auto for update", 5433 "TableName": "unsharded" 5434 }, 5435 "TablesUsed": [ 5436 "main.unsharded" 5437 ] 5438 }, 5439 "gen4-plan": { 5440 "QueryType": "INSERT", 5441 "Original": "insert into unsharded(col) select col from unsharded_auto", 5442 "Instructions": { 5443 "OperatorType": "Insert", 5444 "Variant": "Unsharded", 5445 "Keyspace": { 5446 "Name": "main", 5447 "Sharded": false 5448 }, 5449 "TargetTabletType": "PRIMARY", 5450 "MultiShardAutocommit": false, 5451 "Query": "insert into unsharded(col) select col from unsharded_auto for update", 5452 "TableName": "unsharded" 5453 }, 5454 "TablesUsed": [ 5455 "main.unsharded", 5456 "main.unsharded_auto" 5457 ] 5458 } 5459 }, 5460 { 5461 "comment": "sharded different keyspace", 5462 "query": "insert into user_extra(user_id, col) select col1, col2 from t1", 5463 "v3-plan": { 5464 "QueryType": "INSERT", 5465 "Original": "insert into user_extra(user_id, col) select col1, col2 from t1", 5466 "Instructions": { 5467 "OperatorType": "Insert", 5468 "Variant": "Select", 5469 "Keyspace": { 5470 "Name": "user", 5471 "Sharded": true 5472 }, 5473 "TargetTabletType": "PRIMARY", 5474 "AutoIncrement": "main:2", 5475 "MultiShardAutocommit": false, 5476 "TableName": "user_extra", 5477 "VindexOffsetFromSelect": { 5478 "user_index": "[0]" 5479 }, 5480 "Inputs": [ 5481 { 5482 "OperatorType": "Route", 5483 "Variant": "Scatter", 5484 "Keyspace": { 5485 "Name": "zlookup_unique", 5486 "Sharded": true 5487 }, 5488 "FieldQuery": "select col1, col2 from t1 where 1 != 1", 5489 "Query": "select col1, col2 from t1 for update", 5490 "Table": "t1" 5491 } 5492 ] 5493 }, 5494 "TablesUsed": [ 5495 "user.user_extra" 5496 ] 5497 }, 5498 "gen4-plan": { 5499 "QueryType": "INSERT", 5500 "Original": "insert into user_extra(user_id, col) select col1, col2 from t1", 5501 "Instructions": { 5502 "OperatorType": "Insert", 5503 "Variant": "Select", 5504 "Keyspace": { 5505 "Name": "user", 5506 "Sharded": true 5507 }, 5508 "TargetTabletType": "PRIMARY", 5509 "AutoIncrement": "main:2", 5510 "MultiShardAutocommit": false, 5511 "TableName": "user_extra", 5512 "VindexOffsetFromSelect": { 5513 "user_index": "[0]" 5514 }, 5515 "Inputs": [ 5516 { 5517 "OperatorType": "Route", 5518 "Variant": "Scatter", 5519 "Keyspace": { 5520 "Name": "zlookup_unique", 5521 "Sharded": true 5522 }, 5523 "FieldQuery": "select col1, col2 from t1 where 1 != 1", 5524 "Query": "select col1, col2 from t1 for update", 5525 "Table": "t1" 5526 } 5527 ] 5528 }, 5529 "TablesUsed": [ 5530 "user.user_extra", 5531 "zlookup_unique.t1" 5532 ] 5533 } 5534 }, 5535 { 5536 "comment": "sharded insert table, unsharded select table", 5537 "query": "insert into user_extra(user_id, col) select col1, col2 from unsharded_tab", 5538 "v3-plan": { 5539 "QueryType": "INSERT", 5540 "Original": "insert into user_extra(user_id, col) select col1, col2 from unsharded_tab", 5541 "Instructions": { 5542 "OperatorType": "Insert", 5543 "Variant": "Select", 5544 "Keyspace": { 5545 "Name": "user", 5546 "Sharded": true 5547 }, 5548 "TargetTabletType": "PRIMARY", 5549 "AutoIncrement": "main:2", 5550 "MultiShardAutocommit": false, 5551 "TableName": "user_extra", 5552 "VindexOffsetFromSelect": { 5553 "user_index": "[0]" 5554 }, 5555 "Inputs": [ 5556 { 5557 "OperatorType": "Route", 5558 "Variant": "Unsharded", 5559 "Keyspace": { 5560 "Name": "main_2", 5561 "Sharded": false 5562 }, 5563 "FieldQuery": "select col1, col2 from unsharded_tab where 1 != 1", 5564 "Query": "select col1, col2 from unsharded_tab for update", 5565 "Table": "unsharded_tab" 5566 } 5567 ] 5568 }, 5569 "TablesUsed": [ 5570 "user.user_extra" 5571 ] 5572 }, 5573 "gen4-plan": { 5574 "QueryType": "INSERT", 5575 "Original": "insert into user_extra(user_id, col) select col1, col2 from unsharded_tab", 5576 "Instructions": { 5577 "OperatorType": "Insert", 5578 "Variant": "Select", 5579 "Keyspace": { 5580 "Name": "user", 5581 "Sharded": true 5582 }, 5583 "TargetTabletType": "PRIMARY", 5584 "AutoIncrement": "main:2", 5585 "MultiShardAutocommit": false, 5586 "TableName": "user_extra", 5587 "VindexOffsetFromSelect": { 5588 "user_index": "[0]" 5589 }, 5590 "Inputs": [ 5591 { 5592 "OperatorType": "Route", 5593 "Variant": "Unsharded", 5594 "Keyspace": { 5595 "Name": "main_2", 5596 "Sharded": false 5597 }, 5598 "FieldQuery": "select col1, col2 from unsharded_tab where 1 != 1", 5599 "Query": "select col1, col2 from unsharded_tab for update", 5600 "Table": "unsharded_tab" 5601 } 5602 ] 5603 }, 5604 "TablesUsed": [ 5605 "main_2.unsharded_tab", 5606 "user.user_extra" 5607 ] 5608 } 5609 }, 5610 { 5611 "comment": "unsharded different keyspace", 5612 "query": "insert into unsharded(col) select col from unsharded_tab", 5613 "v3-plan": { 5614 "QueryType": "INSERT", 5615 "Original": "insert into unsharded(col) select col from unsharded_tab", 5616 "Instructions": { 5617 "OperatorType": "Insert", 5618 "Variant": "Unsharded", 5619 "Keyspace": { 5620 "Name": "main", 5621 "Sharded": false 5622 }, 5623 "TargetTabletType": "PRIMARY", 5624 "MultiShardAutocommit": false, 5625 "TableName": "unsharded", 5626 "Inputs": [ 5627 { 5628 "OperatorType": "Route", 5629 "Variant": "Unsharded", 5630 "Keyspace": { 5631 "Name": "main_2", 5632 "Sharded": false 5633 }, 5634 "FieldQuery": "select col from unsharded_tab where 1 != 1", 5635 "Query": "select col from unsharded_tab for update", 5636 "Table": "unsharded_tab" 5637 } 5638 ] 5639 }, 5640 "TablesUsed": [ 5641 "main.unsharded" 5642 ] 5643 }, 5644 "gen4-plan": { 5645 "QueryType": "INSERT", 5646 "Original": "insert into unsharded(col) select col from unsharded_tab", 5647 "Instructions": { 5648 "OperatorType": "Insert", 5649 "Variant": "Unsharded", 5650 "Keyspace": { 5651 "Name": "main", 5652 "Sharded": false 5653 }, 5654 "TargetTabletType": "PRIMARY", 5655 "MultiShardAutocommit": false, 5656 "TableName": "unsharded", 5657 "Inputs": [ 5658 { 5659 "OperatorType": "Route", 5660 "Variant": "Unsharded", 5661 "Keyspace": { 5662 "Name": "main_2", 5663 "Sharded": false 5664 }, 5665 "FieldQuery": "select col from unsharded_tab where 1 != 1", 5666 "Query": "select col from unsharded_tab for update", 5667 "Table": "unsharded_tab" 5668 } 5669 ] 5670 }, 5671 "TablesUsed": [ 5672 "main.unsharded", 5673 "main_2.unsharded_tab" 5674 ] 5675 } 5676 }, 5677 { 5678 "comment": "unsharded insert table, sharded select table", 5679 "query": "insert into unsharded(col) select col from t1", 5680 "v3-plan": { 5681 "QueryType": "INSERT", 5682 "Original": "insert into unsharded(col) select col from t1", 5683 "Instructions": { 5684 "OperatorType": "Insert", 5685 "Variant": "Unsharded", 5686 "Keyspace": { 5687 "Name": "main", 5688 "Sharded": false 5689 }, 5690 "TargetTabletType": "PRIMARY", 5691 "MultiShardAutocommit": false, 5692 "TableName": "unsharded", 5693 "Inputs": [ 5694 { 5695 "OperatorType": "Route", 5696 "Variant": "Scatter", 5697 "Keyspace": { 5698 "Name": "zlookup_unique", 5699 "Sharded": true 5700 }, 5701 "FieldQuery": "select col from t1 where 1 != 1", 5702 "Query": "select col from t1 for update", 5703 "Table": "t1" 5704 } 5705 ] 5706 }, 5707 "TablesUsed": [ 5708 "main.unsharded" 5709 ] 5710 }, 5711 "gen4-plan": { 5712 "QueryType": "INSERT", 5713 "Original": "insert into unsharded(col) select col from t1", 5714 "Instructions": { 5715 "OperatorType": "Insert", 5716 "Variant": "Unsharded", 5717 "Keyspace": { 5718 "Name": "main", 5719 "Sharded": false 5720 }, 5721 "TargetTabletType": "PRIMARY", 5722 "MultiShardAutocommit": false, 5723 "TableName": "unsharded", 5724 "Inputs": [ 5725 { 5726 "OperatorType": "Route", 5727 "Variant": "Scatter", 5728 "Keyspace": { 5729 "Name": "zlookup_unique", 5730 "Sharded": true 5731 }, 5732 "FieldQuery": "select col from t1 where 1 != 1", 5733 "Query": "select col from t1 for update", 5734 "Table": "t1" 5735 } 5736 ] 5737 }, 5738 "TablesUsed": [ 5739 "main.unsharded", 5740 "zlookup_unique.t1" 5741 ] 5742 } 5743 }, 5744 { 5745 "comment": "unsharded subquery in sharded update, not the same keyspace between outer and inner", 5746 "query": "update user set col = (select id from unsharded)", 5747 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5748 "gen4-plan": { 5749 "QueryType": "UPDATE", 5750 "Original": "update user set col = (select id from unsharded)", 5751 "Instructions": { 5752 "OperatorType": "Subquery", 5753 "Variant": "PulloutValue", 5754 "PulloutVars": [ 5755 "__sq1" 5756 ], 5757 "Inputs": [ 5758 { 5759 "OperatorType": "Route", 5760 "Variant": "Unsharded", 5761 "Keyspace": { 5762 "Name": "main", 5763 "Sharded": false 5764 }, 5765 "FieldQuery": "select id from unsharded where 1 != 1", 5766 "Query": "select id from unsharded lock in share mode", 5767 "Table": "unsharded" 5768 }, 5769 { 5770 "OperatorType": "Update", 5771 "Variant": "Scatter", 5772 "Keyspace": { 5773 "Name": "user", 5774 "Sharded": true 5775 }, 5776 "TargetTabletType": "PRIMARY", 5777 "MultiShardAutocommit": false, 5778 "Query": "update `user` set col = :__sq1", 5779 "Table": "user" 5780 } 5781 ] 5782 }, 5783 "TablesUsed": [ 5784 "main.unsharded", 5785 "user.user" 5786 ] 5787 } 5788 }, 5789 { 5790 "comment": "sharded subquery in unsharded update, not the same keyspace", 5791 "query": "update unsharded set col = (select id from user)", 5792 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5793 "gen4-plan": { 5794 "QueryType": "UPDATE", 5795 "Original": "update unsharded set col = (select id from user)", 5796 "Instructions": { 5797 "OperatorType": "Subquery", 5798 "Variant": "PulloutValue", 5799 "PulloutVars": [ 5800 "__sq1" 5801 ], 5802 "Inputs": [ 5803 { 5804 "OperatorType": "Route", 5805 "Variant": "Scatter", 5806 "Keyspace": { 5807 "Name": "user", 5808 "Sharded": true 5809 }, 5810 "FieldQuery": "select id from `user` where 1 != 1", 5811 "Query": "select id from `user` lock in share mode", 5812 "Table": "`user`" 5813 }, 5814 { 5815 "OperatorType": "Update", 5816 "Variant": "Unsharded", 5817 "Keyspace": { 5818 "Name": "main", 5819 "Sharded": false 5820 }, 5821 "TargetTabletType": "PRIMARY", 5822 "MultiShardAutocommit": false, 5823 "Query": "update unsharded set col = :__sq1", 5824 "Table": "unsharded" 5825 } 5826 ] 5827 }, 5828 "TablesUsed": [ 5829 "main.unsharded", 5830 "user.user" 5831 ] 5832 } 5833 }, 5834 { 5835 "comment": "sharded join unsharded subqueries in unsharded update", 5836 "query": "update unsharded set col = (select id from unsharded join user on unsharded.id = user.id)", 5837 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5838 "gen4-plan": { 5839 "QueryType": "UPDATE", 5840 "Original": "update unsharded set col = (select id from unsharded join user on unsharded.id = user.id)", 5841 "Instructions": { 5842 "OperatorType": "Subquery", 5843 "Variant": "PulloutValue", 5844 "PulloutVars": [ 5845 "__sq1" 5846 ], 5847 "Inputs": [ 5848 { 5849 "OperatorType": "Join", 5850 "Variant": "Join", 5851 "JoinColumnIndexes": "R:0", 5852 "JoinVars": { 5853 "unsharded_id": 0 5854 }, 5855 "TableName": "unsharded_`user`", 5856 "Inputs": [ 5857 { 5858 "OperatorType": "Route", 5859 "Variant": "Unsharded", 5860 "Keyspace": { 5861 "Name": "main", 5862 "Sharded": false 5863 }, 5864 "FieldQuery": "select unsharded.id from unsharded where 1 != 1", 5865 "Query": "select unsharded.id from unsharded lock in share mode", 5866 "Table": "unsharded" 5867 }, 5868 { 5869 "OperatorType": "Route", 5870 "Variant": "EqualUnique", 5871 "Keyspace": { 5872 "Name": "user", 5873 "Sharded": true 5874 }, 5875 "FieldQuery": "select id from `user` where 1 != 1", 5876 "Query": "select id from `user` where `user`.id = :unsharded_id lock in share mode", 5877 "Table": "`user`", 5878 "Values": [ 5879 ":unsharded_id" 5880 ], 5881 "Vindex": "user_index" 5882 } 5883 ] 5884 }, 5885 { 5886 "OperatorType": "Update", 5887 "Variant": "Unsharded", 5888 "Keyspace": { 5889 "Name": "main", 5890 "Sharded": false 5891 }, 5892 "TargetTabletType": "PRIMARY", 5893 "MultiShardAutocommit": false, 5894 "Query": "update unsharded set col = :__sq1", 5895 "Table": "unsharded" 5896 } 5897 ] 5898 }, 5899 "TablesUsed": [ 5900 "main.unsharded", 5901 "user.user" 5902 ] 5903 } 5904 }, 5905 { 5906 "comment": "sharded update with sub query where the sources can be merged into a single query", 5907 "query": "update user set col = (select count(*) from user_extra where user_extra.user_id = 5) where id = 5", 5908 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5909 "gen4-plan": { 5910 "QueryType": "UPDATE", 5911 "Original": "update user set col = (select count(*) from user_extra where user_extra.user_id = 5) where id = 5", 5912 "Instructions": { 5913 "OperatorType": "Update", 5914 "Variant": "EqualUnique", 5915 "Keyspace": { 5916 "Name": "user", 5917 "Sharded": true 5918 }, 5919 "TargetTabletType": "PRIMARY", 5920 "MultiShardAutocommit": false, 5921 "Query": "update `user` set col = (select count(*) from user_extra where user_extra.user_id = 5) where id = 5", 5922 "Table": "user", 5923 "Values": [ 5924 "INT64(5)" 5925 ], 5926 "Vindex": "user_index" 5927 }, 5928 "TablesUsed": [ 5929 "user.user", 5930 "user.user_extra" 5931 ] 5932 } 5933 }, 5934 { 5935 "comment": "merge through correlated subquery", 5936 "query": "update user set col = (select count(*) from user_extra where user_extra.user_id = user.id) where id = 5", 5937 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5938 "gen4-plan": { 5939 "QueryType": "UPDATE", 5940 "Original": "update user set col = (select count(*) from user_extra where user_extra.user_id = user.id) where id = 5", 5941 "Instructions": { 5942 "OperatorType": "Update", 5943 "Variant": "EqualUnique", 5944 "Keyspace": { 5945 "Name": "user", 5946 "Sharded": true 5947 }, 5948 "TargetTabletType": "PRIMARY", 5949 "MultiShardAutocommit": false, 5950 "Query": "update `user` set col = (select count(*) from user_extra where user_extra.user_id = `user`.id) where id = 5", 5951 "Table": "user", 5952 "Values": [ 5953 "INT64(5)" 5954 ], 5955 "Vindex": "user_index" 5956 }, 5957 "TablesUsed": [ 5958 "user.user", 5959 "user.user_extra" 5960 ] 5961 } 5962 }, 5963 { 5964 "comment": "merge through correlated subquery #2", 5965 "query": "update user set col = (select count(*) from user_extra where user_extra.user_id = user.id) where id > 5", 5966 "v3-plan": "VT12001: unsupported: sharded subqueries in DML", 5967 "gen4-plan": { 5968 "QueryType": "UPDATE", 5969 "Original": "update user set col = (select count(*) from user_extra where user_extra.user_id = user.id) where id > 5", 5970 "Instructions": { 5971 "OperatorType": "Update", 5972 "Variant": "Scatter", 5973 "Keyspace": { 5974 "Name": "user", 5975 "Sharded": true 5976 }, 5977 "TargetTabletType": "PRIMARY", 5978 "MultiShardAutocommit": false, 5979 "Query": "update `user` set col = (select count(*) from user_extra where user_extra.user_id = `user`.id) where id > 5", 5980 "Table": "user" 5981 }, 5982 "TablesUsed": [ 5983 "user.user", 5984 "user.user_extra" 5985 ] 5986 } 5987 }, 5988 { 5989 "comment": "all defaults empty column, empty values", 5990 "query": "insert into authoritative () values ()", 5991 "plan": { 5992 "QueryType": "INSERT", 5993 "Original": "insert into authoritative () values ()", 5994 "Instructions": { 5995 "OperatorType": "Insert", 5996 "Variant": "Sharded", 5997 "Keyspace": { 5998 "Name": "user", 5999 "Sharded": true 6000 }, 6001 "TargetTabletType": "PRIMARY", 6002 "MultiShardAutocommit": false, 6003 "Query": "insert into authoritative(user_id) values (:_user_id_0)", 6004 "TableName": "authoritative", 6005 "VindexValues": { 6006 "user_index": "NULL" 6007 } 6008 }, 6009 "TablesUsed": [ 6010 "user.authoritative" 6011 ] 6012 } 6013 }, 6014 { 6015 "comment": "explain dml without any directive should fail", 6016 "query": "explain format=vtexplain delete from user", 6017 "plan": "VT09008: vexplain queries/all will actually run queries" 6018 }, 6019 { 6020 "comment": "vexplain dml with actually_run_query directive", 6021 "query": "vexplain /*vt+ execute_dml_queries */ queries delete from user", 6022 "plan": { 6023 "QueryType": "EXPLAIN", 6024 "Original": "vexplain /*vt+ execute_dml_queries */ queries delete from user", 6025 "Instructions": { 6026 "OperatorType": "VEXPLAIN", 6027 "Type": "queries", 6028 "Inputs": [ 6029 { 6030 "OperatorType": "Delete", 6031 "Variant": "Scatter", 6032 "Keyspace": { 6033 "Name": "user", 6034 "Sharded": true 6035 }, 6036 "TargetTabletType": "PRIMARY", 6037 "KsidLength": 1, 6038 "KsidVindex": "user_index", 6039 "MultiShardAutocommit": false, 6040 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", 6041 "Query": "delete from `user`", 6042 "Table": "user" 6043 } 6044 ] 6045 }, 6046 "TablesUsed": [ 6047 "user.user" 6048 ] 6049 } 6050 }, 6051 { 6052 "comment": "explain dml with actually_run_query directive - 2", 6053 "query": "vexplain /*vt+ eXECUTE_DML_QUERIES */ queries delete from user", 6054 "plan": { 6055 "QueryType": "EXPLAIN", 6056 "Original": "vexplain /*vt+ eXECUTE_DML_QUERIES */ queries delete from user", 6057 "Instructions": { 6058 "OperatorType": "VEXPLAIN", 6059 "Type": "queries", 6060 "Inputs": [ 6061 { 6062 "OperatorType": "Delete", 6063 "Variant": "Scatter", 6064 "Keyspace": { 6065 "Name": "user", 6066 "Sharded": true 6067 }, 6068 "TargetTabletType": "PRIMARY", 6069 "KsidLength": 1, 6070 "KsidVindex": "user_index", 6071 "MultiShardAutocommit": false, 6072 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` for update", 6073 "Query": "delete from `user`", 6074 "Table": "user" 6075 } 6076 ] 6077 }, 6078 "TablesUsed": [ 6079 "user.user" 6080 ] 6081 } 6082 }, 6083 { 6084 "comment": "Here V3 populates the TablesUsed incorrectly\n# delete with join from multi table join subquery.", 6085 "query": "delete foo from unsharded as foo join (select id from unsharded a join unsharded_b b on a.user_id = b.user_id) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 6086 "v3-plan": { 6087 "QueryType": "DELETE", 6088 "Original": "delete foo from unsharded as foo join (select id from unsharded a join unsharded_b b on a.user_id = b.user_id) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 6089 "Instructions": { 6090 "OperatorType": "Delete", 6091 "Variant": "Unsharded", 6092 "Keyspace": { 6093 "Name": "main", 6094 "Sharded": false 6095 }, 6096 "TargetTabletType": "PRIMARY", 6097 "MultiShardAutocommit": false, 6098 "Query": "delete foo from unsharded as foo join (select id from unsharded as a join unsharded_b as b on a.user_id = b.user_id) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 6099 "Table": "unsharded, unsharded, unsharded_b" 6100 }, 6101 "TablesUsed": [ 6102 "main.unsharded", 6103 "main.unsharded, unsharded_b" 6104 ] 6105 }, 6106 "gen4-plan": { 6107 "QueryType": "DELETE", 6108 "Original": "delete foo from unsharded as foo join (select id from unsharded a join unsharded_b b on a.user_id = b.user_id) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 6109 "Instructions": { 6110 "OperatorType": "Delete", 6111 "Variant": "Unsharded", 6112 "Keyspace": { 6113 "Name": "main", 6114 "Sharded": false 6115 }, 6116 "TargetTabletType": "PRIMARY", 6117 "MultiShardAutocommit": false, 6118 "Query": "delete foo from unsharded as foo join (select id from unsharded as a join unsharded_b as b on a.user_id = b.user_id) as keepers on foo.id = keepers.id where keepers.id is null and foo.col is not null and foo.col < 1000", 6119 "Table": "unsharded, unsharded_b" 6120 }, 6121 "TablesUsed": [ 6122 "main.unsharded", 6123 "main.unsharded_b" 6124 ] 6125 } 6126 }, 6127 { 6128 "comment": "update with routing using multi column vindex", 6129 "query": "update user set col = 1 where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6130 "v3-plan": { 6131 "QueryType": "UPDATE", 6132 "Original": "update user set col = 1 where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6133 "Instructions": { 6134 "OperatorType": "Update", 6135 "Variant": "Scatter", 6136 "Keyspace": { 6137 "Name": "user", 6138 "Sharded": true 6139 }, 6140 "TargetTabletType": "PRIMARY", 6141 "MultiShardAutocommit": false, 6142 "Query": "update `user` set col = 1 where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", 6143 "Table": "user" 6144 }, 6145 "TablesUsed": [ 6146 "user.user" 6147 ] 6148 }, 6149 "gen4-plan": { 6150 "QueryType": "UPDATE", 6151 "Original": "update user set col = 1 where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6152 "Instructions": { 6153 "OperatorType": "Update", 6154 "Variant": "MultiEqual", 6155 "Keyspace": { 6156 "Name": "user", 6157 "Sharded": true 6158 }, 6159 "TargetTabletType": "PRIMARY", 6160 "MultiShardAutocommit": false, 6161 "Query": "update `user` set col = 1 where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", 6162 "Table": "user", 6163 "Values": [ 6164 "(VARCHAR(\"aa\"), VARCHAR(\"cc\"))" 6165 ], 6166 "Vindex": "name_user_map" 6167 }, 6168 "TablesUsed": [ 6169 "user.user" 6170 ] 6171 } 6172 }, 6173 { 6174 "comment": "delete with routing using multi column vindex", 6175 "query": "delete from user where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6176 "v3-plan": { 6177 "QueryType": "DELETE", 6178 "Original": "delete from user where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6179 "Instructions": { 6180 "OperatorType": "Delete", 6181 "Variant": "Scatter", 6182 "Keyspace": { 6183 "Name": "user", 6184 "Sharded": true 6185 }, 6186 "TargetTabletType": "PRIMARY", 6187 "KsidLength": 1, 6188 "KsidVindex": "user_index", 6189 "MultiShardAutocommit": false, 6190 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where (`name`, col) in (('aa', 'bb'), ('cc', 'dd')) for update", 6191 "Query": "delete from `user` where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", 6192 "Table": "user" 6193 }, 6194 "TablesUsed": [ 6195 "user.user" 6196 ] 6197 }, 6198 "gen4-plan": { 6199 "QueryType": "DELETE", 6200 "Original": "delete from user where (name, col) in (('aa', 'bb'), ('cc', 'dd'))", 6201 "Instructions": { 6202 "OperatorType": "Delete", 6203 "Variant": "MultiEqual", 6204 "Keyspace": { 6205 "Name": "user", 6206 "Sharded": true 6207 }, 6208 "TargetTabletType": "PRIMARY", 6209 "KsidLength": 1, 6210 "KsidVindex": "user_index", 6211 "MultiShardAutocommit": false, 6212 "OwnedVindexQuery": "select Id, `Name`, Costly from `user` where (`name`, col) in (('aa', 'bb'), ('cc', 'dd')) for update", 6213 "Query": "delete from `user` where (`name`, col) in (('aa', 'bb'), ('cc', 'dd'))", 6214 "Table": "user", 6215 "Values": [ 6216 "(VARCHAR(\"aa\"), VARCHAR(\"cc\"))" 6217 ], 6218 "Vindex": "name_user_map" 6219 }, 6220 "TablesUsed": [ 6221 "user.user" 6222 ] 6223 } 6224 }, 6225 { 6226 "comment": "insert into ref; TODO(maxeng) is this a bug?", 6227 "query": "insert into ref(col) values(1)", 6228 "plan": { 6229 "QueryType": "INSERT", 6230 "Original": "insert into ref(col) values(1)", 6231 "Instructions": { 6232 "OperatorType": "Insert", 6233 "Variant": "Sharded", 6234 "Keyspace": { 6235 "Name": "user", 6236 "Sharded": true 6237 }, 6238 "TargetTabletType": "PRIMARY", 6239 "MultiShardAutocommit": false, 6240 "Query": "insert into ref(col) values (1)", 6241 "TableName": "ref" 6242 }, 6243 "TablesUsed": [ 6244 "user.ref" 6245 ] 6246 } 6247 }, 6248 { 6249 "comment": "update using last_insert_id with an argument", 6250 "query": "update main.m1 set foo = last_insert_id(foo+1) where id = 12345", 6251 "plan": { 6252 "QueryType": "UPDATE", 6253 "Original": "update main.m1 set foo = last_insert_id(foo+1) where id = 12345", 6254 "Instructions": { 6255 "OperatorType": "Update", 6256 "Variant": "Unsharded", 6257 "Keyspace": { 6258 "Name": "main", 6259 "Sharded": false 6260 }, 6261 "TargetTabletType": "PRIMARY", 6262 "MultiShardAutocommit": false, 6263 "Query": "update m1 set foo = last_insert_id(foo + 1) where id = 12345", 6264 "Table": "m1" 6265 }, 6266 "TablesUsed": [ 6267 "main.m1" 6268 ] 6269 } 6270 } 6271 ]