33
33
from google .cloud .spanner_v1 import DirectedReadOptions , param_types
34
34
from google .cloud .spanner_v1 .data_types import JsonObject
35
35
from google .protobuf import field_mask_pb2 # type: ignore
36
+ from google .protobuf import struct_pb2 # type: ignore
36
37
37
38
from testdata import singer_pb2
38
39
@@ -90,7 +91,7 @@ def update_instance(instance_id):
90
91
labels = {
91
92
"sample_name" : "snippets-update_instance-explicit" ,
92
93
},
93
- edition = spanner_instance_admin .Instance .Edition .ENTERPRISE , # Optional
94
+ edition = spanner_instance_admin .Instance .Edition .STANDARD , # Optional
94
95
),
95
96
field_mask = field_mask_pb2 .FieldMask (paths = ["labels" , "edition" ]),
96
97
)
@@ -3204,6 +3205,7 @@ def create_instance_with_autoscaling_config(instance_id):
3204
3205
"sample_name" : "snippets-create_instance_with_autoscaling_config" ,
3205
3206
"created" : str (int (time .time ())),
3206
3207
},
3208
+ edition = spanner_instance_admin .Instance .Edition .ENTERPRISE , # Optional
3207
3209
),
3208
3210
)
3209
3211
@@ -3509,6 +3511,90 @@ def query_data_with_proto_types_parameter(instance_id, database_id):
3509
3511
# [END spanner_query_with_proto_types_parameter]
3510
3512
3511
3513
3514
+ # [START spanner_database_add_split_points]
3515
+ def add_split_points (instance_id , database_id ):
3516
+ """Adds split points to table and index."""
3517
+
3518
+ from google .cloud .spanner_admin_database_v1 .types import spanner_database_admin
3519
+
3520
+ spanner_client = spanner .Client ()
3521
+ database_admin_api = spanner_client .database_admin_api
3522
+
3523
+ request = spanner_database_admin .UpdateDatabaseDdlRequest (
3524
+ database = database_admin_api .database_path (
3525
+ spanner_client .project , instance_id , database_id
3526
+ ),
3527
+ statements = ["CREATE INDEX IF NOT EXISTS SingersByFirstLastName ON Singers(FirstName, LastName)" ],
3528
+ )
3529
+
3530
+ operation = database_admin_api .update_database_ddl (request )
3531
+
3532
+ print ("Waiting for operation to complete..." )
3533
+ operation .result (OPERATION_TIMEOUT_SECONDS )
3534
+
3535
+ print ("Added the SingersByFirstLastName index." )
3536
+
3537
+ addSplitPointRequest = spanner_database_admin .AddSplitPointsRequest (
3538
+ database = database_admin_api .database_path (
3539
+ spanner_client .project , instance_id , database_id
3540
+ ),
3541
+ # Table split
3542
+ # Index split without table key part
3543
+ # Index split with table key part: first key is the index key and second the table key
3544
+ split_points = [
3545
+ spanner_database_admin .SplitPoints (
3546
+ table = "Singers" ,
3547
+ keys = [
3548
+ spanner_database_admin .SplitPoints .Key (
3549
+ key_parts = struct_pb2 .ListValue (
3550
+ values = [struct_pb2 .Value (string_value = "42" )]
3551
+ )
3552
+ )
3553
+ ],
3554
+ ),
3555
+ spanner_database_admin .SplitPoints (
3556
+ index = "SingersByFirstLastName" ,
3557
+ keys = [
3558
+ spanner_database_admin .SplitPoints .Key (
3559
+ key_parts = struct_pb2 .ListValue (
3560
+ values = [
3561
+ struct_pb2 .Value (string_value = "John" ),
3562
+ struct_pb2 .Value (string_value = "Doe" ),
3563
+ ]
3564
+ )
3565
+ )
3566
+ ],
3567
+ ),
3568
+ spanner_database_admin .SplitPoints (
3569
+ index = "SingersByFirstLastName" ,
3570
+ keys = [
3571
+ spanner_database_admin .SplitPoints .Key (
3572
+ key_parts = struct_pb2 .ListValue (
3573
+ values = [
3574
+ struct_pb2 .Value (string_value = "Jane" ),
3575
+ struct_pb2 .Value (string_value = "Doe" ),
3576
+ ]
3577
+ )
3578
+ ),
3579
+ spanner_database_admin .SplitPoints .Key (
3580
+ key_parts = struct_pb2 .ListValue (
3581
+ values = [struct_pb2 .Value (string_value = "38" )]
3582
+ )
3583
+ ),
3584
+
3585
+ ],
3586
+ ),
3587
+ ],
3588
+ )
3589
+
3590
+ operation = database_admin_api .add_split_points (addSplitPointRequest )
3591
+
3592
+ print ("Added split points." )
3593
+
3594
+
3595
+ # [END spanner_database_add_split_points]
3596
+
3597
+
3512
3598
if __name__ == "__main__" : # noqa: C901
3513
3599
parser = argparse .ArgumentParser (
3514
3600
description = __doc__ , formatter_class = argparse .RawDescriptionHelpFormatter
@@ -3666,6 +3752,10 @@ def query_data_with_proto_types_parameter(instance_id, database_id):
3666
3752
"query_data_with_proto_types_parameter" ,
3667
3753
help = query_data_with_proto_types_parameter .__doc__ ,
3668
3754
)
3755
+ subparsers .add_parser (
3756
+ "add_split_points" ,
3757
+ help = add_split_points .__doc__ ,
3758
+ )
3669
3759
3670
3760
args = parser .parse_args ()
3671
3761
@@ -3815,3 +3905,5 @@ def query_data_with_proto_types_parameter(instance_id, database_id):
3815
3905
update_data_with_proto_types_with_dml (args .instance_id , args .database_id )
3816
3906
elif args .command == "query_data_with_proto_types_parameter" :
3817
3907
query_data_with_proto_types_parameter (args .instance_id , args .database_id )
3908
+ elif args .command == "add_split_points" :
3909
+ add_split_points (args .instance_id , args .database_id )
0 commit comments