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

Commit 18ceb6a

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

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

samples/samples/snippets.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2539,6 +2539,28 @@ def read_then_write(transaction):
25392539

25402540
# [END spanner_transaction_timeout]
25412541

2542+
def set_statement_timeout(instance_id, database_id):
2543+
"""Executes a transaction with a statement timeout."""
2544+
# [START spanner_set_statement_timeout]
2545+
# instance_id = "your-spanner-instance"
2546+
# database_id = "your-spanner-db-id"
2547+
spanner_client = spanner.Client()
2548+
instance = spanner_client.instance(instance_id)
2549+
database = instance.database(database_id)
2550+
2551+
def write(transaction):
2552+
# Insert a record and configure the statement timeout to 60 seconds
2553+
row_ct = transaction.execute_update(
2554+
"INSERT INTO Singers (SingerId, FirstName, LastName) "
2555+
" VALUES (10, 'George', 'Washington')",
2556+
timeout = 60
2557+
)
2558+
print("{} record(s) inserted.".format(row_ct))
2559+
2560+
database.run_in_transaction(write)
2561+
2562+
# [END spanner_set_statement_timeout]
2563+
25422564

25432565
def set_request_tag(instance_id, database_id):
25442566
"""Executes a snapshot read with a request tag."""
@@ -3651,6 +3673,9 @@ def add_split_points(instance_id, database_id):
36513673
subparsers.add_parser(
36523674
"set_transaction_timeout", help=set_transaction_timeout.__doc__
36533675
)
3676+
subparsers.add_parser(
3677+
"set_statement_timeout", help=set_statement_timeout.__doc__
3678+
)
36543679
subparsers.add_parser(
36553680
"query_data_with_new_column", help=query_data_with_new_column.__doc__
36563681
)
@@ -3819,6 +3844,8 @@ def add_split_points(instance_id, database_id):
38193844
set_max_commit_delay(args.instance_id, args.database_id)
38203845
elif args.command == "set_transaction_timeout":
38213846
set_transaction_timeout(args.instance_id, args.database_id)
3847+
elif args.command == "set_statement_timeout":
3848+
set_statement_timeout(args.instance_id, args.database_id)
38223849
elif args.command == "query_data_with_new_column":
38233850
query_data_with_new_column(args.instance_id, args.database_id)
38243851
elif args.command == "read_write_transaction":

samples/samples/snippets_test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,12 @@ def test_set_transaction_timeout(capsys, instance_id, sample_database):
861861
out, _ = capsys.readouterr()
862862
assert "1 record(s) inserted." in out
863863

864+
@pytest.mark.dependency(depends=["insert_datatypes_data"])
865+
def test_set_statement_timeout(capsys, instance_id, sample_database):
866+
snippets.set_statement_timeout(instance_id, sample_database.database_id)
867+
out, _ = capsys.readouterr()
868+
assert "1 record(s) inserted." in out
869+
864870

865871
@pytest.mark.dependency(depends=["insert_data"])
866872
def test_set_request_tag(capsys, instance_id, sample_database):

0 commit comments

Comments
 (0)