internal TransactionOptions ToTransactionOptions() { var innerOptions = new TransactionOptions.Types.ReadOnly(); switch (Mode) { case TimestampBoundMode.Strong: innerOptions.Strong = true; break; case TimestampBoundMode.ReadTimestamp: innerOptions.ReadTimestamp = wkt::Timestamp.FromDateTime(Timestamp); break; case TimestampBoundMode.MinReadTimestamp: innerOptions.MinReadTimestamp = wkt::Timestamp.FromDateTime(Timestamp); break; case TimestampBoundMode.ExactStaleness: innerOptions.ExactStaleness = Duration.FromTimeSpan(Staleness); break; case TimestampBoundMode.MaxStaleness: innerOptions.MaxStaleness = Duration.FromTimeSpan(Staleness); break; default: throw new ArgumentOutOfRangeException(); } return(new TransactionOptions { ReadOnly = innerOptions }); }
/* * Probe to test PartitionQuery and PartitionRead grpc call from Spanner stub. * * Args: * stub: An object of SpannerStub. * metrics: A list of metrics. */ public static void partition(Spanner.SpannerClient client, ref Dictionary <string, long> metrics) { long latency; //Start Session Session session = StartSession(client); TransactionOptions txn_options = new TransactionOptions(); TransactionOptions.Types.ReadOnly ro = new TransactionOptions.Types.ReadOnly(); txn_options.ReadOnly = ro; TransactionSelector txn_selector = new TransactionSelector(); txn_selector.Begin = txn_options; //Probing PartitionQuery call PartitionQueryRequest ptn_query_request = new PartitionQueryRequest(); ptn_query_request.Session = session.Name; ptn_query_request.Sql = "select * FROM users"; ptn_query_request.Transaction = txn_selector; stopwatch.Start(); client.PartitionQuery(ptn_query_request); stopwatch.Stop(); latency = stopwatch.ElapsedMilliseconds; metrics.Add("partition_query_latency_ms", latency); //Probing PartitionRead Call PartitionReadRequest ptn_read_request = new PartitionReadRequest(); ptn_read_request.Session = session.Name; ptn_read_request.Table = "users"; ptn_read_request.Transaction = txn_selector; KeySet keyset = new KeySet(); keyset.All = true; ptn_read_request.KeySet = keyset; stopwatch.Start(); client.PartitionRead(ptn_read_request); stopwatch.Stop(); latency = stopwatch.ElapsedMilliseconds; metrics.Add("partition_read_latency_ms", latency); //Delete Session EndSession(client, session); }