github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/sql/logictest/testdata/logic_test/txn (about) 1 # Transaction involving schema changes. 2 statement ok 3 BEGIN TRANSACTION 4 5 statement ok 6 CREATE TABLE kv ( 7 k VARCHAR PRIMARY KEY, 8 v VARCHAR 9 ) 10 11 statement ok 12 INSERT INTO kv (k,v) VALUES ('a', 'b') 13 14 query TT 15 SELECT * FROM kv 16 ---- 17 a b 18 19 statement ok 20 COMMIT TRANSACTION 21 22 # A transaction to update kv. 23 24 statement ok 25 BEGIN TRANSACTION 26 27 statement ok 28 UPDATE kv SET v = 'c' WHERE k in ('a') 29 30 query TT 31 SELECT * FROM kv 32 ---- 33 a c 34 35 statement ok 36 COMMIT TRANSACTION 37 38 query TT 39 SELECT * FROM kv 40 ---- 41 a c 42 43 # Rollback a transaction before committing. 44 45 statement ok 46 BEGIN TRANSACTION 47 48 statement ok 49 UPDATE kv SET v = 'b' WHERE k in ('a') 50 51 query TT 52 SELECT * FROM kv 53 ---- 54 a b 55 56 statement ok 57 ROLLBACK TRANSACTION 58 59 query TT 60 SELECT * FROM kv 61 ---- 62 a c 63 64 # Statement execution should not depend on request boundaries. 65 66 statement ok 67 BEGIN TRANSACTION; UPDATE kv SET v = 'b' WHERE k in ('a') 68 69 query TT 70 SELECT * FROM kv 71 ---- 72 a b 73 74 query TT 75 SELECT * FROM kv; COMMIT; BEGIN; UPDATE kv SET v = 'd' WHERE k in ('a') 76 ---- 77 a b 78 79 query TT 80 SELECT * FROM kv; UPDATE kv SET v = 'c' WHERE k in ('a'); COMMIT 81 ---- 82 a d 83 84 query TT 85 SELECT * FROM kv 86 ---- 87 a c 88 89 # Abort transaction with a syntax error, and ignore statements until the end of the transaction block 90 91 statement ok 92 BEGIN 93 94 query error at or near ",": syntax error 95 SELECT count(*, 1) FROM kv 96 97 statement error pgcode 25P02 current transaction is aborted, commands ignored until end of transaction block 98 UPDATE kv SET v = 'b' WHERE k in ('a') 99 100 statement ok 101 ROLLBACK 102 103 query TT 104 SELECT * FROM kv 105 ---- 106 a c 107 108 # Abort transaction with a problematic statement, and ignore statements until 109 # the end of the transaction block (a COMMIT/ROLLBACK statement as the first 110 # statement in a batch). 111 112 statement ok 113 BEGIN 114 115 statement error duplicate key value \(k\)=\('a'\) violates unique constraint "primary" 116 INSERT INTO kv VALUES('unique_key', 'some value'); 117 INSERT INTO kv VALUES('a', 'c'); 118 INSERT INTO kv VALUES('unique_key2', 'some value'); 119 COMMIT 120 121 # Txn is still aborted. 122 statement error current transaction is aborted, commands ignored until end of transaction block 123 UPDATE kv SET v = 'b' WHERE k in ('a') 124 125 # Txn is still aborted. 126 statement error current transaction is aborted, commands ignored until end of transaction block 127 UPDATE kv SET v = 'b' WHERE k in ('a') 128 129 # Now the transaction will be ended. After that, statements execute. 130 statement ok 131 COMMIT; 132 INSERT INTO kv VALUES('x', 'y') 133 134 query TT rowsort 135 SELECT * FROM kv 136 ---- 137 a c 138 x y 139 140 # Two BEGINs in a row. 141 142 statement ok 143 BEGIN TRANSACTION 144 145 statement error there is already a transaction in progress 146 BEGIN TRANSACTION 147 148 statement ok 149 ROLLBACK TRANSACTION 150 151 # BEGIN in the middle of a transaction is an error. 152 153 statement ok 154 BEGIN TRANSACTION 155 156 statement ok 157 UPDATE kv SET v = 'b' WHERE k in ('a') 158 159 statement error there is already a transaction in progress 160 BEGIN TRANSACTION 161 162 statement error current transaction is aborted, commands ignored until end of transaction block 163 SELECT * FROM kv 164 165 statement ok 166 ROLLBACK TRANSACTION 167 168 # An empty transaction is allowed. 169 170 statement ok 171 BEGIN; COMMIT 172 173 # END is same as commit 174 statement ok 175 BEGIN; END 176 177 # COMMIT/ROLLBACK without a transaction are errors. 178 179 statement error there is no transaction in progress 180 COMMIT TRANSACTION 181 182 statement error there is no transaction in progress 183 ROLLBACK TRANSACTION 184 185 # Set isolation level without a transaction is an error. 186 187 statement error there is no transaction in progress 188 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 189 190 statement ok 191 BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT; COMMIT 192 193 statement ok 194 BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT 195 196 statement ok 197 BEGIN TRANSACTION; SET TRANSACTION ISOLATION LEVEL SNAPSHOT; COMMIT 198 199 statement ok 200 BEGIN TRANSACTION; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT 201 202 # It is an error to change the isolation level of a running transaction. 203 204 statement ok 205 BEGIN TRANSACTION 206 207 statement ok 208 UPDATE kv SET v = 'b' WHERE k in ('a') 209 210 statement ok 211 ROLLBACK 212 213 statement ok 214 BEGIN TRANSACTION 215 216 statement ok 217 UPDATE kv SET v = 'b' WHERE k in ('a') 218 219 statement ok 220 ROLLBACK 221 222 # Transactions default to serializable. 223 224 statement ok 225 BEGIN TRANSACTION 226 227 query T 228 SHOW TRANSACTION ISOLATION LEVEL 229 ---- 230 serializable 231 232 query T 233 SHOW transaction_isolation 234 ---- 235 serializable 236 237 # SNAPSHOT is now mapped to serializable 238 statement ok 239 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 240 241 query T 242 SHOW TRANSACTION ISOLATION LEVEL 243 ---- 244 serializable 245 246 query T 247 SHOW transaction_isolation 248 ---- 249 serializable 250 251 statement ok 252 COMMIT 253 254 # We can't set isolation level to an unsupported one. 255 256 statement error invalid value for parameter "transaction_isolation": "read committed" 257 SET transaction_isolation = 'read committed' 258 259 # We can explicitly start a transaction with isolation level 260 # specified. 261 262 statement ok 263 BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT 264 265 query T 266 SHOW TRANSACTION ISOLATION LEVEL 267 ---- 268 serializable 269 270 statement ok 271 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 272 273 query T 274 SHOW TRANSACTION ISOLATION LEVEL 275 ---- 276 serializable 277 278 statement ok 279 COMMIT 280 281 # User priority. 282 283 statement error there is no transaction in progress 284 SET TRANSACTION PRIORITY LOW 285 286 statement ok 287 BEGIN TRANSACTION PRIORITY LOW; COMMIT 288 289 statement ok 290 BEGIN TRANSACTION PRIORITY NORMAL; COMMIT 291 292 statement ok 293 BEGIN TRANSACTION PRIORITY HIGH; COMMIT 294 295 statement ok 296 BEGIN TRANSACTION; SET TRANSACTION PRIORITY LOW; COMMIT 297 298 statement ok 299 BEGIN TRANSACTION; SET TRANSACTION PRIORITY NORMAL; COMMIT 300 301 statement ok 302 BEGIN TRANSACTION; SET TRANSACTION PRIORITY HIGH; COMMIT 303 304 # It is an error to change the user priority of a running transaction. 305 306 statement ok 307 BEGIN TRANSACTION 308 309 statement ok 310 UPDATE kv SET v = 'b' WHERE k in ('a') 311 312 statement error cannot change the user priority of a running transaction 313 SET TRANSACTION PRIORITY HIGH 314 315 statement ok 316 ROLLBACK 317 318 statement ok 319 BEGIN TRANSACTION 320 321 statement ok 322 UPDATE kv SET v = 'b' WHERE k in ('a') 323 324 statement error cannot change the user priority of a running transaction 325 SET TRANSACTION PRIORITY HIGH 326 327 statement ok 328 ROLLBACK 329 330 # User priority default to normal 331 332 statement ok 333 BEGIN TRANSACTION 334 335 query T 336 SHOW TRANSACTION PRIORITY 337 ---- 338 normal 339 340 statement ok 341 SET TRANSACTION PRIORITY HIGH 342 343 query T 344 SHOW TRANSACTION PRIORITY 345 ---- 346 high 347 348 statement ok 349 COMMIT 350 351 # We can explicitly start a transaction in low user priority. 352 353 statement ok 354 BEGIN TRANSACTION PRIORITY LOW 355 356 query T 357 SHOW TRANSACTION PRIORITY 358 ---- 359 low 360 361 statement ok 362 SET TRANSACTION PRIORITY NORMAL 363 364 query T 365 SHOW TRANSACTION PRIORITY 366 ---- 367 normal 368 369 statement ok 370 COMMIT 371 372 # Transaction priority can be assigned a default value. 373 374 query T 375 SHOW DEFAULT_TRANSACTION_PRIORITY 376 ---- 377 normal 378 379 query T 380 SHOW TRANSACTION PRIORITY 381 ---- 382 normal 383 384 statement ok 385 SET DEFAULT_TRANSACTION_PRIORITY TO 'LOW' 386 387 query T 388 SHOW DEFAULT_TRANSACTION_PRIORITY 389 ---- 390 low 391 392 query T 393 SHOW TRANSACTION PRIORITY 394 ---- 395 low 396 397 statement ok 398 SET DEFAULT_TRANSACTION_PRIORITY TO 'NORMAL' 399 400 query T 401 SHOW DEFAULT_TRANSACTION_PRIORITY 402 ---- 403 normal 404 405 query T 406 SHOW TRANSACTION PRIORITY 407 ---- 408 normal 409 410 statement ok 411 SET DEFAULT_TRANSACTION_PRIORITY TO 'HIGH' 412 413 query T 414 SHOW DEFAULT_TRANSACTION_PRIORITY 415 ---- 416 high 417 418 query T 419 SHOW TRANSACTION PRIORITY 420 ---- 421 high 422 423 statement ok 424 SET SESSION CHARACTERISTICS AS TRANSACTION PRIORITY LOW 425 426 query T 427 SHOW DEFAULT_TRANSACTION_PRIORITY 428 ---- 429 low 430 431 query T 432 SHOW TRANSACTION PRIORITY 433 ---- 434 low 435 436 statement ok 437 SET SESSION CHARACTERISTICS AS TRANSACTION PRIORITY NORMAL 438 439 query T 440 SHOW DEFAULT_TRANSACTION_PRIORITY 441 ---- 442 normal 443 444 query T 445 SHOW TRANSACTION PRIORITY 446 ---- 447 normal 448 449 statement ok 450 SET SESSION CHARACTERISTICS AS TRANSACTION PRIORITY HIGH 451 452 query T 453 SHOW DEFAULT_TRANSACTION_PRIORITY 454 ---- 455 high 456 457 query T 458 SHOW TRANSACTION PRIORITY 459 ---- 460 high 461 462 # Without the priority specified, BEGIN should use the default 463 464 statement ok 465 BEGIN 466 467 query T 468 SHOW TRANSACTION PRIORITY 469 ---- 470 high 471 472 statement ok 473 COMMIT 474 475 # With the priority specified, BEGIN PRIORITY overrides the default 476 477 statement ok 478 BEGIN TRANSACTION PRIORITY LOW 479 480 query T 481 SHOW TRANSACTION PRIORITY 482 ---- 483 low 484 485 statement ok 486 COMMIT 487 488 # Even after starting a transaction, the default priority can be overridden 489 490 statement ok 491 BEGIN 492 493 query T 494 SHOW TRANSACTION PRIORITY 495 ---- 496 high 497 498 statement ok 499 SET TRANSACTION PRIORITY LOW 500 501 query T 502 SHOW TRANSACTION PRIORITY 503 ---- 504 low 505 506 statement ok 507 COMMIT 508 509 statement ok 510 RESET DEFAULT_TRANSACTION_PRIORITY 511 512 query T 513 SHOW DEFAULT_TRANSACTION_PRIORITY 514 ---- 515 normal 516 517 # We can specify both isolation level and user priority. 518 519 statement ok 520 BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT, PRIORITY LOW; COMMIT 521 522 statement ok 523 BEGIN TRANSACTION PRIORITY LOW, ISOLATION LEVEL SNAPSHOT; COMMIT 524 525 # We can explicitly start a transaction with specified isolation level and low user priority. 526 527 statement ok 528 BEGIN TRANSACTION ISOLATION LEVEL SNAPSHOT, PRIORITY LOW 529 530 query T 531 SHOW TRANSACTION ISOLATION LEVEL 532 ---- 533 serializable 534 535 query T 536 SHOW TRANSACTION PRIORITY 537 ---- 538 low 539 540 statement ok 541 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, PRIORITY HIGH 542 543 query T 544 SHOW TRANSACTION ISOLATION LEVEL 545 ---- 546 serializable 547 548 query T 549 SHOW TRANSACTION PRIORITY 550 ---- 551 high 552 553 statement ok 554 SET TRANSACTION PRIORITY NORMAL, ISOLATION LEVEL SNAPSHOT 555 556 query T 557 SHOW TRANSACTION ISOLATION LEVEL 558 ---- 559 serializable 560 561 query T 562 SHOW TRANSACTION PRIORITY 563 ---- 564 normal 565 566 statement ok 567 COMMIT 568 569 statement ok 570 SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SNAPSHOT 571 572 query T 573 SHOW DEFAULT_TRANSACTION_ISOLATION 574 ---- 575 serializable 576 577 # SHOW without a transaction should create an auto-transaction with the default level 578 query T 579 SHOW TRANSACTION ISOLATION LEVEL 580 ---- 581 serializable 582 583 statement ok 584 SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE 585 586 query T 587 SHOW DEFAULT_TRANSACTION_ISOLATION 588 ---- 589 serializable 590 591 statement ok 592 SET DEFAULT_TRANSACTION_ISOLATION TO 'SNAPSHOT' 593 594 query T 595 SHOW DEFAULT_TRANSACTION_ISOLATION 596 ---- 597 serializable 598 599 # Without the isolation level specified, BEGIN should use the default 600 601 statement ok 602 BEGIN 603 604 query T 605 SHOW TRANSACTION ISOLATION LEVEL 606 ---- 607 serializable 608 609 statement ok 610 COMMIT 611 612 # Setting user priority without isolation level should not change isolation level 613 614 statement ok 615 BEGIN TRANSACTION 616 617 statement ok 618 SET TRANSACTION ISOLATION LEVEL SNAPSHOT 619 620 query T 621 SHOW TRANSACTION ISOLATION LEVEL 622 ---- 623 serializable 624 625 statement ok 626 SET TRANSACTION PRIORITY HIGH 627 628 query T 629 SHOW TRANSACTION ISOLATION LEVEL 630 ---- 631 serializable 632 633 statement ok 634 COMMIT 635 636 statement ok 637 RESET DEFAULT_TRANSACTION_ISOLATION 638 639 query T 640 SHOW DEFAULT_TRANSACTION_ISOLATION 641 ---- 642 serializable 643 644 # SHOW TRANSACTION STATUS 645 646 query T 647 SHOW TRANSACTION STATUS 648 ---- 649 NoTxn 650 651 statement ok 652 BEGIN 653 654 query T 655 SHOW TRANSACTION STATUS 656 ---- 657 Open 658 659 statement ok 660 COMMIT 661 662 query T 663 SHOW TRANSACTION STATUS 664 ---- 665 NoTxn 666 667 statement ok 668 BEGIN 669 670 query error pq: relation "t\.b" does not exist 671 SELECT a FROM t.b 672 673 query T 674 SHOW TRANSACTION STATUS 675 ---- 676 Aborted 677 678 statement ok 679 ROLLBACK 680 681 query T 682 SHOW TRANSACTION STATUS 683 ---- 684 NoTxn 685 686 # CommitWait state 687 statement ok 688 BEGIN;SAVEPOINT cockroach_restart 689 690 statement ok 691 RELEASE SAVEPOINT cockroach_restart 692 693 query T 694 SHOW TRANSACTION STATUS 695 ---- 696 CommitWait 697 698 statement ok 699 COMMIT 700 701 # Aborted state 702 # The SELECT 1 is necessary to move the txn out of the AutoRetry state, 703 # otherwise the next statement is automatically retried on the server. 704 statement ok 705 BEGIN TRANSACTION; SAVEPOINT cockroach_restart; SELECT 1 706 707 query error pgcode 40001 restart transaction: crdb_internal.force_retry\(\): TransactionRetryWithProtoRefreshError: forced by crdb_internal.force_retry\(\) 708 SELECT crdb_internal.force_retry('1h':::INTERVAL) 709 710 query T 711 SHOW TRANSACTION STATUS 712 ---- 713 Aborted 714 715 statement ok 716 ROLLBACK TO SAVEPOINT cockroach_restart 717 718 query T 719 SHOW TRANSACTION STATUS 720 ---- 721 Open 722 723 statement ok 724 COMMIT 725 726 727 # Automatic retries for the first batch. 728 # We use a sequence to avoid busy-looping the test. 729 statement ok 730 CREATE SEQUENCE s; 731 BEGIN TRANSACTION; 732 SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h':::INTERVAL), 0) 733 734 # Demonstrate that the txn was indeed retried. 735 query I 736 SELECT currval('s') 737 ---- 738 3 739 740 statement ok 741 ROLLBACK; 742 DROP SEQUENCE s 743 744 # Automatic retries for the first batch even when that first batch comes after 745 # the BEGIN. 746 statement ok 747 CREATE SEQUENCE s; 748 BEGIN TRANSACTION; 749 750 statement ok 751 SELECT 1; 752 SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h':::INTERVAL), 0) 753 754 # Demonstrate that the txn was indeed retried. 755 query I 756 SELECT currval('s') 757 ---- 758 3 759 760 statement ok 761 ROLLBACK; 762 DROP SEQUENCE s 763 764 # Automatic retries for the first batch even when that first batch comes after 765 # the BEGIN and the BEGIN also has special statements that don't move the txn 766 # state out of the "AutoRetry" state. 767 statement ok 768 CREATE SEQUENCE s; 769 BEGIN TRANSACTION; 770 SAVEPOINT cockroach_restart; 771 SET TRANSACTION PRIORITY HIGH; 772 SET TRANSACTION ISOLATION LEVEL SNAPSHOT; 773 774 statement ok 775 SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h':::INTERVAL), 0) 776 777 # Demonstrate that the txn was indeed retried. 778 query I 779 SELECT currval('s') 780 ---- 781 3 782 783 query T 784 SHOW TRANSACTION ISOLATION LEVEL 785 ---- 786 serializable 787 788 query T 789 SHOW TRANSACTION PRIORITY 790 ---- 791 high 792 793 statement ok 794 ROLLBACK; 795 DROP SEQUENCE s 796 797 # Like above, but the SAVEPOINT is its own batch. 798 statement ok 799 CREATE SEQUENCE s; 800 BEGIN TRANSACTION 801 802 statement ok 803 SAVEPOINT cockroach_restart; 804 805 statement ok 806 SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h':::INTERVAL), 0) 807 808 # Demonstrate that the txn was indeed retried. 809 query I 810 SELECT currval('s') 811 ---- 812 3 813 814 statement ok 815 ROLLBACK; 816 DROP SEQUENCE s 817 818 819 # Automatic retries for the first batch after an explicit restart. 820 statement ok 821 CREATE SEQUENCE s; 822 BEGIN TRANSACTION; 823 SAVEPOINT cockroach_restart; 824 SELECT 1; 825 826 query error pgcode 40001 restart transaction: crdb_internal.force_retry\(\): TransactionRetryWithProtoRefreshError: forced by crdb_internal.force_retry\(\) 827 SELECT crdb_internal.force_retry('1h':::INTERVAL) 828 829 statement ok 830 ROLLBACK TO SAVEPOINT COCKROACH_RESTART; 831 832 # This is the automatic retry we care about. 833 statement ok 834 SELECT IF(nextval('s')<3, crdb_internal.force_retry('1h':::INTERVAL), 0) 835 836 # Demonstrate that the txn was indeed retried. 837 query I 838 SELECT currval('s') 839 ---- 840 3 841 842 statement ok 843 ROLLBACK; 844 DROP SEQUENCE s 845 846 847 # Test READ ONLY/WRITE syntax. 848 849 statement ok 850 BEGIN 851 852 query T 853 SHOW transaction_read_only 854 ---- 855 off 856 857 statement ok 858 SET TRANSACTION READ ONLY 859 860 query T 861 SHOW transaction_read_only 862 ---- 863 on 864 865 statement ok 866 SET TRANSACTION READ WRITE 867 868 query T 869 SHOW transaction_read_only 870 ---- 871 off 872 873 statement ok 874 SET transaction_read_only = true 875 876 query T 877 SHOW transaction_read_only 878 ---- 879 on 880 881 statement ok 882 SET transaction_read_only = false 883 884 query T 885 SHOW transaction_read_only 886 ---- 887 off 888 889 statement error read mode specified multiple times 890 SET TRANSACTION READ ONLY, READ WRITE 891 892 statement ok 893 ROLLBACK 894 895 statement ok 896 BEGIN READ WRITE 897 898 query T 899 SHOW transaction_read_only 900 ---- 901 off 902 903 statement ok 904 COMMIT 905 906 statement ok 907 BEGIN READ ONLY 908 909 query T 910 SHOW transaction_read_only 911 ---- 912 on 913 914 statement ok 915 COMMIT 916 917 # Test default read-only status. 918 query T 919 SHOW default_transaction_read_only 920 ---- 921 off 922 923 statement ok 924 SET default_transaction_read_only = true 925 926 query T 927 SHOW default_transaction_read_only 928 ---- 929 on 930 931 statement ok 932 SET SESSION CHARACTERISTICS AS TRANSACTION READ WRITE 933 934 query T 935 SHOW default_transaction_read_only 936 ---- 937 off 938 939 statement ok 940 SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY 941 942 query T 943 SHOW default_transaction_read_only 944 ---- 945 on 946 947 statement ok 948 BEGIN 949 950 statement ok 951 SAVEPOINT cockroach_restart 952 953 query T 954 SHOW transaction_read_only 955 ---- 956 on 957 958 # Can override setting. 959 statement ok 960 SET TRANSACTION READ WRITE 961 962 query T 963 SHOW transaction_read_only 964 ---- 965 off 966 967 # Rolling back to savepoint doesn't reset to default. 968 # TODO(jordan) fix this if necessary. 969 statement ok 970 ROLLBACK TO SAVEPOINT cockroach_restart 971 972 query T 973 SHOW transaction_read_only 974 ---- 975 off 976 977 statement ok 978 COMMIT 979 980 # BEGIN READ WRITE overrides READ ONLY default 981 statement ok 982 BEGIN READ WRITE 983 984 statement ok 985 CREATE SEQUENCE a 986 987 statement ok 988 COMMIT 989 990 statement error cannot execute CREATE TABLE in a read-only transaction 991 CREATE TABLE tab (a int) 992 993 statement error cannot execute INSERT in a read-only transaction 994 INSERT INTO kv VALUES('foo') 995 996 statement error cannot execute UPDATE in a read-only transaction 997 UPDATE kv SET v = 'foo' 998 999 statement error cannot execute UPSERT in a read-only transaction 1000 UPSERT INTO kv VALUES('foo') 1001 1002 statement error cannot execute DELETE in a read-only transaction 1003 DELETE FROM kv 1004 1005 statement error cannot execute nextval\(\) in a read-only transaction 1006 SELECT nextval('a') 1007 1008 statement error cannot execute setval\(\) in a read-only transaction 1009 SELECT setval('a', 2) 1010 1011 query T 1012 SHOW TRANSACTION STATUS 1013 ---- 1014 NoTxn 1015 1016 statement error read mode specified multiple times 1017 BEGIN READ WRITE, READ ONLY 1018 1019 statement error user priority specified multiple times 1020 BEGIN PRIORITY LOW, PRIORITY HIGH 1021 1022 statement error isolation level specified multiple times 1023 BEGIN ISOLATION LEVEL SERIALIZABLE, ISOLATION LEVEL SERIALIZABLE 1024 1025 # Retryable error in a txn that hasn't performed any KV operations. It used to 1026 # not work. 1027 # The SELECT 1 is necessary to take the session out of the AutoRetry state, 1028 # otherwise the statement below would be retries automatically. 1029 statement ok 1030 BEGIN; SELECT 1 1031 1032 query error pgcode 40001 restart transaction: crdb_internal.force_retry\(\): TransactionRetryWithProtoRefreshError: forced by crdb_internal.force_retry\(\) 1033 SELECT crdb_internal.force_retry('1h':::INTERVAL) 1034 1035 statement ok 1036 ROLLBACK 1037 1038 # restore the default 1039 statement ok 1040 SET default_transaction_read_only = false