| 
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