/// <summary> /// Gets the Request to send to a cassandra node based on the statement type /// </summary> internal static IRequest GetRequest(IStatement statement, ISerializer serializer, IRequestOptions requestOptions) { ICqlRequest request = null; if (statement.IsIdempotent == null) { statement.SetIdempotence(requestOptions.DefaultIdempotence); } if (statement is RegularStatement s1) { s1.Serializer = serializer; var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s1, requestOptions, null); options.ValueNames = s1.QueryValueNames; request = new QueryRequest(serializer, s1.QueryString, options, s1.IsTracing, s1.OutgoingPayload); } if (statement is BoundStatement s2) { // set skip metadata only when result metadata id is supported because of CASSANDRA-10786 var skipMetadata = serializer.ProtocolVersion.SupportsResultMetadataId() && s2.PreparedStatement.ResultMetadata.ContainsColumnDefinitions(); var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s2, requestOptions, skipMetadata); request = new ExecuteRequest( serializer, s2.PreparedStatement.Id, null, s2.PreparedStatement.ResultMetadata, options, s2.IsTracing, s2.OutgoingPayload); } if (statement is BatchStatement s) { s.Serializer = serializer; var consistency = requestOptions.ConsistencyLevel; if (s.ConsistencyLevel.HasValue) { consistency = s.ConsistencyLevel.Value; } request = new BatchRequest(serializer, s.OutgoingPayload, s, consistency, requestOptions); } if (request == null) { throw new NotSupportedException("Statement of type " + statement.GetType().FullName + " not supported"); } return(request); }
/// <summary> /// Gets the Request to send to a cassandra node based on the statement type /// </summary> internal static IRequest GetRequest(IStatement statement, Serializer serializer, Configuration config) { ICqlRequest request = null; if (statement.IsIdempotent == null) { statement.SetIdempotence(config.QueryOptions.GetDefaultIdempotence()); } if (statement is RegularStatement) { var s = (RegularStatement)statement; s.Serializer = serializer; var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s, config.QueryOptions, config.Policies); options.ValueNames = s.QueryValueNames; request = new QueryRequest(serializer.ProtocolVersion, s.QueryString, s.IsTracing, options); } if (statement is BoundStatement) { var s = (BoundStatement)statement; var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s, config.QueryOptions, config.Policies); request = new ExecuteRequest(serializer.ProtocolVersion, s.PreparedStatement.Id, null, s.IsTracing, options); } if (statement is BatchStatement) { var s = (BatchStatement)statement; s.Serializer = serializer; var consistency = config.QueryOptions.GetConsistencyLevel(); if (s.ConsistencyLevel != null) { consistency = s.ConsistencyLevel.Value; } request = new BatchRequest(serializer.ProtocolVersion, s, consistency); } if (request == null) { throw new NotSupportedException("Statement of type " + statement.GetType().FullName + " not supported"); } //Set the outgoing payload for the request request.Payload = statement.OutgoingPayload; return(request); }
/// <summary> /// Gets the Request to send to a cassandra node based on the statement type /// </summary> internal static IRequest GetRequest(IStatement statement, ISerializer serializer, IRequestOptions requestOptions) { ICqlRequest request = null; if (statement.IsIdempotent == null) { statement.SetIdempotence(requestOptions.DefaultIdempotence); } if (statement is RegularStatement s1) { s1.Serializer = serializer; var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s1, requestOptions); options.ValueNames = s1.QueryValueNames; request = new QueryRequest(serializer.ProtocolVersion, s1.QueryString, s1.IsTracing, options); } if (statement is BoundStatement s2) { var options = QueryProtocolOptions.CreateFromQuery(serializer.ProtocolVersion, s2, requestOptions); request = new ExecuteRequest(serializer.ProtocolVersion, s2.PreparedStatement.Id, null, s2.PreparedStatement.ResultMetadataId, s2.IsTracing, options); } if (statement is BatchStatement s) { s.Serializer = serializer; var consistency = requestOptions.ConsistencyLevel; if (s.ConsistencyLevel.HasValue) { consistency = s.ConsistencyLevel.Value; } request = new BatchRequest(serializer.ProtocolVersion, s, consistency, requestOptions); } if (request == null) { throw new NotSupportedException("Statement of type " + statement.GetType().FullName + " not supported"); } //Set the outgoing payload for the request request.Payload = statement.OutgoingPayload; return(request); }