indigophox commented on code in PR #34817:
URL: https://github.com/apache/arrow/pull/34817#discussion_r1410046885


##########
format/Flight.proto:
##########
@@ -525,3 +525,108 @@ message FlightData {
 message PutResult {
   bytes app_metadata = 1;
 }
+
+/*
+ * EXPERIMENTAL: Union of possible value types for a Session Option to be set 
to.
+ */
+message SessionOptionValue {
+  message StringListValue {
+    repeated string values = 1;
+  }
+
+  oneof option_value {
+    string string_value = 1;
+    bool bool_value = 2;
+    sfixed32 int32_value = 3;
+    sfixed64 int64_value = 4;
+    float float_value = 5;
+    double double_value = 6;
+    StringListValue string_list_value = 7;
+  }
+}
+
+/*
+ * EXPERIMENTAL: A request to set session options for an existing or new 
(implicit)
+ * server session.
+ *
+ * Sessions are persisted and referenced via RFC 6265 HTTP cookies, canonically
+ * 'arrow_flight_session_id', although implementations may freely choose their 
own name.
+ */
+message SetSessionOptionsRequest {
+  map<string, SessionOptionValue> session_options = 1;
+}
+
+/*
+ * EXPERIMENTAL: The results (individually) of setting a set of session 
options.
+ */
+message SetSessionOptionsResult {
+  enum Status {
+    // The status of setting the option is unknown. Servers should avoid using
+    // this value (send a NOT_FOUND error if the requested query is
+    // not known). Clients can retry the request.
+    SET_SESSION_OPTION_RESULT_UNSPECIFIED = 0;
+    // The session option setting completed successfully.
+    SET_SESSION_OPTION_RESULT_OK = 1;
+    // The given session option name was an alias for another option name.
+    SET_SESSION_OPTION_RESULT_OK_MAPPED = 2;
+    // The given session option name is invalid.
+    SET_SESSION_OPTION_RESULT_INVALID_NAME = 3;
+    // The session option value is invalid.
+    SET_SESSION_OPTION_RESULT_INVALID_VALUE = 4;
+    // The session option cannot be set.
+    SET_SESSION_OPTION_RESULT_ERROR = 5;
+  }
+
+  message Result {
+    Status status = 1;
+  }
+  
+  map<string, Result> results = 1;

Review Comment:
   Certainly.  For example to return that an option value cannot be set on the 
server, we either expose this or construct a structured error message to 
capture which option names had which success or error.  This way, drivers or 
generic clients could easily (and programmatically, without parsing 
human-readable error/warning text) establish a fallback behaviour given 
unavailability of specific keys or values.  In a more simple case, some 
specific name or value failures may be fatal while others may be attempts to 
set non-critical "preferences" e.g. more efficient result packing or the like.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to