Skip to content
This repository was archived by the owner on Jun 8, 2026. It is now read-only.

Commit d637266

Browse files
committed
chore: add sample to set statement timeout within a transaciton
1 parent 234135d commit d637266

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

samples/samples/snippets.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2540,6 +2540,29 @@ def read_then_write(transaction):
25402540
# [END spanner_transaction_timeout]
25412541

25422542

2543+
def set_statement_timeout(instance_id, database_id):
2544+
"""Executes a transaction with a statement timeout."""
2545+
# [START spanner_set_statement_timeout]
2546+
# instance_id = "your-spanner-instance"
2547+
# database_id = "your-spanner-db-id"
2548+
spanner_client = spanner.Client()
2549+
instance = spanner_client.instance(instance_id)
2550+
database = instance.database(database_id)
2551+
2552+
def write(transaction):
2553+
# Insert a record and configure the statement timeout to 60 seconds
2554+
row_ct = transaction.execute_update(
2555+
"INSERT INTO Singers (SingerId, FirstName, LastName) "
2556+
" VALUES (10, 'George', 'Washington')",
2557+
timeout=60,
2558+
)
2559+
print("{} record(s) inserted.".format(row_ct))
2560+
2561+
database.run_in_transaction(write)
2562+
2563+
# [END spanner_set_statement_timeout]
2564+
2565+
25432566
def set_request_tag(instance_id, database_id):
25442567
"""Executes a snapshot read with a request tag."""
25452568
# [START spanner_set_request_tag]
@@ -3651,6 +3674,7 @@ def add_split_points(instance_id, database_id):
36513674
subparsers.add_parser(
36523675
"set_transaction_timeout", help=set_transaction_timeout.__doc__
36533676
)
3677+
subparsers.add_parser("set_statement_timeout", help=set_statement_timeout.__doc__)
36543678
subparsers.add_parser(
36553679
"query_data_with_new_column", help=query_data_with_new_column.__doc__
36563680
)
@@ -3819,6 +3843,8 @@ def add_split_points(instance_id, database_id):
38193843
set_max_commit_delay(args.instance_id, args.database_id)
38203844
elif args.command == "set_transaction_timeout":
38213845
set_transaction_timeout(args.instance_id, args.database_id)
3846+
elif args.command == "set_statement_timeout":
3847+
set_statement_timeout(args.instance_id, args.database_id)
38223848
elif args.command == "query_data_with_new_column":
38233849
query_data_with_new_column(args.instance_id, args.database_id)
38243850
elif args.command == "read_write_transaction":

samples/samples/snippets_test.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -862,6 +862,13 @@ def test_set_transaction_timeout(capsys, instance_id, sample_database):
862862
assert "1 record(s) inserted." in out
863863

864864

865+
@pytest.mark.dependency(depends=["insert_datatypes_data"])
866+
def test_set_statement_timeout(capsys, instance_id, sample_database):
867+
snippets.set_statement_timeout(instance_id, sample_database.database_id)
868+
out, _ = capsys.readouterr()
869+
assert "1 record(s) inserted." in out
870+
871+
865872
@pytest.mark.dependency(depends=["insert_data"])
866873
def test_set_request_tag(capsys, instance_id, sample_database):
867874
snippets.set_request_tag(instance_id, sample_database.database_id)

0 commit comments

Comments
 (0)