From 62da71033d9cbfc56d53bf317c16260b4c8224e1 Mon Sep 17 00:00:00 2001 From: larkee Date: Thu, 12 Mar 2020 17:44:58 +1100 Subject: [PATCH 1/5] spanner: add query versioning samples --- spanner/cloud-client/snippets.py | 53 +++++++++++++++++++++++++++ spanner/cloud-client/snippets_test.py | 16 ++++++++ 2 files changed, 69 insertions(+) diff --git a/spanner/cloud-client/snippets.py b/spanner/cloud-client/snippets.py index d2cbf2f9bf6..a37e5e367fc 100644 --- a/spanner/cloud-client/snippets.py +++ b/spanner/cloud-client/snippets.py @@ -1392,6 +1392,49 @@ def query_data_with_timestamp_parameter(instance_id, database_id): # [END spanner_query_with_timestamp_parameter] +def query_data_with_query_options(instance_id, database_id): + """Queries sample data using SQL with query options.""" + # [START query_data_with_query_options] + # 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) + + with database.snapshot() as snapshot: + results = snapshot.execute_sql( + 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues ', + query_options={'optimizer_version': '1'} + ) + + for row in results: + print(u"VenueId: {}, VenueName: {}, LastUpdateTime: {}".format( + *row)) + # [END query_data_with_query_options] + + +def create_client_with_query_options(instance_id, database_id): + """Create a client with query options.""" + # [START create_client_with_query_options] + # instance_id = "your-spanner-instance" + # database_id = "your-spanner-db-id" + spanner_client = spanner.Client( + query_options={'optimizer_version': '1'} + ) + instance = spanner_client.instance(instance_id) + database = instance.database(database_id) + + with database.snapshot() as snapshot: + results = snapshot.execute_sql( + 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues ' + ) + + for row in results: + print(u"VenueId: {}, VenueName: {}, LastUpdateTime: {}".format( + *row)) + # [END create_client_with_query_options] + + if __name__ == '__main__': # noqa: C901 parser = argparse.ArgumentParser( description=__doc__, @@ -1506,6 +1549,12 @@ def query_data_with_timestamp_parameter(instance_id, database_id): subparsers.add_parser( 'query_data_with_timestamp_parameter', help=query_data_with_timestamp_parameter.__doc__) + subparsers.add_parser( + 'query_data_with_query_options', + help=query_data_with_query_options.__doc__) + subparsers.add_parser( + 'create_client_with_query_options', + help=create_client_with_query_options.__doc__) args = parser.parse_args() @@ -1607,3 +1656,7 @@ def query_data_with_timestamp_parameter(instance_id, database_id): query_data_with_string(args.instance_id, args.database_id) elif args.command == 'query_data_with_timestamp_parameter': query_data_with_timestamp_parameter(args.instance_id, args.database_id) + elif args.command == 'query_data_with_query_options': + query_data_with_query_options(args.instance_id, args.database_id) + elif args.command == 'create_client_with_query_options': + create_client_with_query_options(args.instance_id, args.database_id) diff --git a/spanner/cloud-client/snippets_test.py b/spanner/cloud-client/snippets_test.py index f285aa29e72..1b5fb872a43 100644 --- a/spanner/cloud-client/snippets_test.py +++ b/spanner/cloud-client/snippets_test.py @@ -358,3 +358,19 @@ def test_query_data_with_timestamp_parameter(capsys): assert 'VenueId: 4, VenueName: Venue 4, LastUpdateTime:' in out assert 'VenueId: 19, VenueName: Venue 19, LastUpdateTime:' in out assert 'VenueId: 42, VenueName: Venue 42, LastUpdateTime:' in out + + +def test_query_data_with_query_options(capsys): + snippets.query_data_with_query_options(INSTANCE_ID, DATABASE_ID) + out, _ = capsys.readouterr() + assert 'VenueId: 4, VenueName: Venue 4' in out + assert 'VenueId: 19, VenueName: Venue 19' in out + assert 'VenueId: 42, VenueName: Venue 42' in out + + +def test_create_client_with_query_options(capsys): + snippets.create_client_with_query_options(INSTANCE_ID, DATABASE_ID) + out, _ = capsys.readouterr() + assert 'VenueId: 4, VenueName: Venue 4' in out + assert 'VenueId: 19, VenueName: Venue 19' in out + assert 'VenueId: 42, VenueName: Venue 42' in out From 6f54c7a31c9901b91b4f6e4e2f20a7f7b1173a8d Mon Sep 17 00:00:00 2001 From: larkee Date: Thu, 12 Mar 2020 18:10:52 +1100 Subject: [PATCH 2/5] update test assertions --- spanner/cloud-client/snippets_test.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spanner/cloud-client/snippets_test.py b/spanner/cloud-client/snippets_test.py index 1b5fb872a43..08d3e277d7f 100644 --- a/spanner/cloud-client/snippets_test.py +++ b/spanner/cloud-client/snippets_test.py @@ -363,14 +363,14 @@ def test_query_data_with_timestamp_parameter(capsys): def test_query_data_with_query_options(capsys): snippets.query_data_with_query_options(INSTANCE_ID, DATABASE_ID) out, _ = capsys.readouterr() - assert 'VenueId: 4, VenueName: Venue 4' in out - assert 'VenueId: 19, VenueName: Venue 19' in out - assert 'VenueId: 42, VenueName: Venue 42' in out + assert 'VenueId: 4, VenueName: Venue 4, LastUpdateTime:' in out + assert 'VenueId: 19, VenueName: Venue 19, LastUpdateTime:' in out + assert 'VenueId: 42, VenueName: Venue 42, LastUpdateTime:' in out def test_create_client_with_query_options(capsys): snippets.create_client_with_query_options(INSTANCE_ID, DATABASE_ID) out, _ = capsys.readouterr() - assert 'VenueId: 4, VenueName: Venue 4' in out - assert 'VenueId: 19, VenueName: Venue 19' in out - assert 'VenueId: 42, VenueName: Venue 42' in out + assert 'VenueId: 4, VenueName: Venue 4, LastUpdateTime:' in out + assert 'VenueId: 19, VenueName: Venue 19, LastUpdateTime:' in out + assert 'VenueId: 42, VenueName: Venue 42, LastUpdateTime:' in out From 021674ae03f17534f4f80866b507515d9a2eabc1 Mon Sep 17 00:00:00 2001 From: Shanika Kuruppu Date: Tue, 17 Mar 2020 15:24:35 +1100 Subject: [PATCH 3/5] Fixed the region tags. --- spanner/cloud-client/snippets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spanner/cloud-client/snippets.py b/spanner/cloud-client/snippets.py index a37e5e367fc..41031802afa 100644 --- a/spanner/cloud-client/snippets.py +++ b/spanner/cloud-client/snippets.py @@ -1394,7 +1394,7 @@ def query_data_with_timestamp_parameter(instance_id, database_id): def query_data_with_query_options(instance_id, database_id): """Queries sample data using SQL with query options.""" - # [START query_data_with_query_options] + # [START spanner_query_with_query_options] # instance_id = "your-spanner-instance" # database_id = "your-spanner-db-id" spanner_client = spanner.Client() @@ -1410,12 +1410,12 @@ def query_data_with_query_options(instance_id, database_id): for row in results: print(u"VenueId: {}, VenueName: {}, LastUpdateTime: {}".format( *row)) - # [END query_data_with_query_options] + # [END spanner_query_with_query_options] def create_client_with_query_options(instance_id, database_id): """Create a client with query options.""" - # [START create_client_with_query_options] + # [START spanner_create_client_with_query_options] # instance_id = "your-spanner-instance" # database_id = "your-spanner-db-id" spanner_client = spanner.Client( @@ -1432,7 +1432,7 @@ def create_client_with_query_options(instance_id, database_id): for row in results: print(u"VenueId: {}, VenueName: {}, LastUpdateTime: {}".format( *row)) - # [END create_client_with_query_options] + # [END spanner_create_client_with_query_options] if __name__ == '__main__': # noqa: C901 From 8cf9f97835d293a93461225cd522c8fa7194cbf4 Mon Sep 17 00:00:00 2001 From: Shanika Kuruppu Date: Tue, 17 Mar 2020 15:25:18 +1100 Subject: [PATCH 4/5] Removed extra whitespace. --- spanner/cloud-client/snippets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spanner/cloud-client/snippets.py b/spanner/cloud-client/snippets.py index 41031802afa..ff7ae513cac 100644 --- a/spanner/cloud-client/snippets.py +++ b/spanner/cloud-client/snippets.py @@ -1403,7 +1403,7 @@ def query_data_with_query_options(instance_id, database_id): with database.snapshot() as snapshot: results = snapshot.execute_sql( - 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues ', + 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues', query_options={'optimizer_version': '1'} ) @@ -1426,7 +1426,7 @@ def create_client_with_query_options(instance_id, database_id): with database.snapshot() as snapshot: results = snapshot.execute_sql( - 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues ' + 'SELECT VenueId, VenueName, LastUpdateTime FROM Venues' ) for row in results: From fcf2b504cf2c70f3b18a7a3d49254812578d91e3 Mon Sep 17 00:00:00 2001 From: larkee Date: Wed, 18 Mar 2020 07:52:30 +1100 Subject: [PATCH 5/5] update required spanner version --- spanner/cloud-client/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spanner/cloud-client/requirements.txt b/spanner/cloud-client/requirements.txt index c423bfa654b..b122372d96e 100644 --- a/spanner/cloud-client/requirements.txt +++ b/spanner/cloud-client/requirements.txt @@ -1,2 +1,2 @@ -google-cloud-spanner==1.13.0 +google-cloud-spanner==1.15.0 futures==3.3.0; python_version < "3"