From f97b9f5ca6fb3a12def4010085783c703fd4cf2f Mon Sep 17 00:00:00 2001 From: Navarre Ginsberg Date: Fri, 9 Feb 2024 02:28:39 +0000 Subject: [PATCH 1/6] Add a sample --- samples/samples/snippets.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index 3ffd579f4a..28d824de98 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -787,6 +787,34 @@ def update_data(instance_id, database_id): # [END spanner_update_data] +# [START spanner_set_max_commit_delay_batch] +def set_max_commit_delay(instance_id, database_id): + """Updates sample data in the database. + + This updates the `MarketingBudget` column which must be created before + running this sample. You can add the column by running the `add_column` + sample or by running this DDL statement against your database: + + ALTER TABLE Albums ADD COLUMN MarketingBudget INT64 + + """ + spanner_client = spanner.Client() + instance = spanner_client.instance(instance_id) + database = instance.database(database_id) + + with database.batch(max_commit_delay=datetime.timedelta(milliseconds=100)) as batch: + batch.update( + table="Albums", + columns=("SingerId", "AlbumId", "MarketingBudget"), + values=[(1, 1, 100000), (2, 2, 500000)], + ) + + print("Updated data.") + + +# [END spanner_set_max_commit_delay_batch] + + # [START spanner_read_write_transaction] def read_write_transaction(instance_id, database_id): """Performs a read-write transaction to update two sample records in the @@ -2816,6 +2844,7 @@ def directed_read_options( subparsers.add_parser("read_stale_data", help=read_stale_data.__doc__) subparsers.add_parser("add_column", help=add_column.__doc__) subparsers.add_parser("update_data", help=update_data.__doc__) + subparsers.add_parser("set_max_commit_delay", help=set_max_commit_delay.__doc__) subparsers.add_parser( "query_data_with_new_column", help=query_data_with_new_column.__doc__ ) From aecfbdc2bc18c0f76e2a209785b62d5f2337e1ca Mon Sep 17 00:00:00 2001 From: Navarre Ginsberg Date: Fri, 9 Feb 2024 02:30:17 +0000 Subject: [PATCH 2/6] Small addition. --- samples/samples/snippets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index 28d824de98..ca86193b10 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -2988,6 +2988,8 @@ def directed_read_options( add_column(args.instance_id, args.database_id) elif args.command == "update_data": update_data(args.instance_id, args.database_id) + elif args.command == "set_max_commit_delay": + set_max_commit_delay(args.instance_id, args.database_id) elif args.command == "query_data_with_new_column": query_data_with_new_column(args.instance_id, args.database_id) elif args.command == "read_write_transaction": From 75ce281ab102b06545494d15a253c0a1f9598bc1 Mon Sep 17 00:00:00 2001 From: Navarre Ginsberg Date: Sat, 10 Feb 2024 03:04:29 +0000 Subject: [PATCH 3/6] Change sample to a transactional sample. --- samples/samples/snippets.py | 51 +++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index ca86193b10..c27d06851b 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -787,34 +787,6 @@ def update_data(instance_id, database_id): # [END spanner_update_data] -# [START spanner_set_max_commit_delay_batch] -def set_max_commit_delay(instance_id, database_id): - """Updates sample data in the database. - - This updates the `MarketingBudget` column which must be created before - running this sample. You can add the column by running the `add_column` - sample or by running this DDL statement against your database: - - ALTER TABLE Albums ADD COLUMN MarketingBudget INT64 - - """ - spanner_client = spanner.Client() - instance = spanner_client.instance(instance_id) - database = instance.database(database_id) - - with database.batch(max_commit_delay=datetime.timedelta(milliseconds=100)) as batch: - batch.update( - table="Albums", - columns=("SingerId", "AlbumId", "MarketingBudget"), - values=[(1, 1, 100000), (2, 2, 500000)], - ) - - print("Updated data.") - - -# [END spanner_set_max_commit_delay_batch] - - # [START spanner_read_write_transaction] def read_write_transaction(instance_id, database_id): """Performs a read-write transaction to update two sample records in the @@ -1435,6 +1407,29 @@ def insert_singers(transaction): # [END spanner_get_commit_stats] +# [START spanner_set_max_commit_delay] +def set_max_commit_delay(instance_id, database_id): + """Inserts sample data and sets a max commit delay.""" + spanner_client = spanner.Client() + instance = spanner_client.instance(instance_id) + database = instance.database(database_id) + + def insert_singers(transaction): + row_ct = transaction.execute_update( + "INSERT Singers (SingerId, FirstName, LastName) " + " VALUES (110, 'Virginia', 'Watson')" + ) + + print("{} record(s) inserted.".format(row_ct)) + + database.run_in_transaction( + insert_singers, max_commit_delay=datetime.timedelta(milliseconds=100) + + + +# [END spanner_set_max_commit_delay] + + def update_data_with_dml(instance_id, database_id): """Updates sample data from the database using a DML statement.""" # [START spanner_dml_standard_update] From 9a99669e0db673821630189db217759cb1eb1a67 Mon Sep 17 00:00:00 2001 From: Navarre Ginsberg Date: Mon, 12 Feb 2024 22:49:44 +0000 Subject: [PATCH 4/6] Comments --- samples/samples/snippets.py | 5 ++--- samples/samples/snippets_test.py | 7 +++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index c27d06851b..79aa9d986c 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -1417,14 +1417,13 @@ def set_max_commit_delay(instance_id, database_id): def insert_singers(transaction): row_ct = transaction.execute_update( "INSERT Singers (SingerId, FirstName, LastName) " - " VALUES (110, 'Virginia', 'Watson')" + " VALUES (111, 'Grace', 'Bennis')" ) print("{} record(s) inserted.".format(row_ct)) database.run_in_transaction( - insert_singers, max_commit_delay=datetime.timedelta(milliseconds=100) - + insert_singers, max_commit_delay=datetime.timedelta(milliseconds=100)) # [END spanner_set_max_commit_delay] diff --git a/samples/samples/snippets_test.py b/samples/samples/snippets_test.py index a49a4ee480..92a21799a4 100644 --- a/samples/samples/snippets_test.py +++ b/samples/samples/snippets_test.py @@ -499,6 +499,13 @@ def test_log_commit_stats(capsys, instance_id, sample_database): assert "4 mutation(s) in transaction." in out +@pytest.mark.dependency(name="set_max_commit_delay") +def test_set_max_commit_delay(capsys, instance_id, sample_database): + snippets.set_max_commit_delay(instance_id, sample_database.database_id) + out, _ = capsys.readouterr() + assert "1 record(s) inserted." in out + + @pytest.mark.dependency(depends=["insert_data"]) def test_update_data_with_dml(capsys, instance_id, sample_database): snippets.update_data_with_dml(instance_id, sample_database.database_id) From f21de308d0d9b1e3f858848753d14dc5b584495c Mon Sep 17 00:00:00 2001 From: Sri Harsha CH Date: Wed, 14 Feb 2024 13:59:22 +0000 Subject: [PATCH 5/6] feat(spanner): update snippet tag position --- samples/samples/snippets.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/samples/samples/snippets.py b/samples/samples/snippets.py index 79aa9d986c..85c5c4b661 100644 --- a/samples/samples/snippets.py +++ b/samples/samples/snippets.py @@ -1407,9 +1407,11 @@ def insert_singers(transaction): # [END spanner_get_commit_stats] -# [START spanner_set_max_commit_delay] def set_max_commit_delay(instance_id, database_id): """Inserts sample data and sets a max commit delay.""" + # [START spanner_set_max_commit_delay] + # instance_id = "your-spanner-instance" + # database_id = "your-spanner-db-id" spanner_client = spanner.Client() instance = spanner_client.instance(instance_id) database = instance.database(database_id) @@ -1423,10 +1425,9 @@ def insert_singers(transaction): print("{} record(s) inserted.".format(row_ct)) database.run_in_transaction( - insert_singers, max_commit_delay=datetime.timedelta(milliseconds=100)) - - -# [END spanner_set_max_commit_delay] + insert_singers, max_commit_delay=datetime.timedelta(milliseconds=100) + ) + # [END spanner_set_max_commit_delay] def update_data_with_dml(instance_id, database_id): From b8f09c3682a2d04ff6a305933dcd35b93decbbb2 Mon Sep 17 00:00:00 2001 From: Sri Harsha CH Date: Wed, 14 Feb 2024 17:02:02 +0000 Subject: [PATCH 6/6] fix test output --- samples/samples/snippets_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/samples/snippets_test.py b/samples/samples/snippets_test.py index 92a21799a4..37d1c39e37 100644 --- a/samples/samples/snippets_test.py +++ b/samples/samples/snippets_test.py @@ -595,7 +595,7 @@ def update_data_with_partitioned_dml(capsys, instance_id, sample_database): def test_delete_data_with_partitioned_dml(capsys, instance_id, sample_database): snippets.delete_data_with_partitioned_dml(instance_id, sample_database.database_id) out, _ = capsys.readouterr() - assert "6 record(s) deleted" in out + assert "7 record(s) deleted" in out @pytest.mark.dependency(depends=["add_column"])