lidavidm commented on code in PR #38385:
URL: https://github.com/apache/arrow/pull/38385#discussion_r1394722801


##########
format/FlightSql.proto:
##########
@@ -1779,9 +1796,60 @@ message CommandPreparedStatementUpdate {
 }
 
 /*
- * Returned from the RPC call DoPut when a CommandStatementUpdate
- * CommandPreparedStatementUpdate was in the request, containing
- * results from the update.
+ * Represents a bulk ingestion request. Used in the command member of 
FlightDescriptor
+ * for the the RPC call DoPut to cause the server load the contents of the 
stream's
+ * FlightData into the target destination.
+ */
+message CommandStatementIngest {
+  option (experimental) = true;
+
+  // Describes the behavior for loading bulk data.
+  enum IngestMode {
+    // Ingestion behavior unspecified.
+    INGEST_MODE_UNSPECIFIED = 0;
+    // Create the target table. Fail if the target table already exists.
+    INGEST_MODE_CREATE = 1;
+    // Append to an existing target table. Fail if the target table does not 
exist.
+    INGEST_MODE_APPEND = 2;
+    // Drop the target table if it exists. Then follow INGEST_MODE_CREATE 
behavior.
+    INGEST_MODE_REPLACE = 3;
+    // Create the target table if it does not exist. Then follow 
INGEST_MODE_APPEND behavior.
+    INGEST_MODE_CREATE_APPEND = 4;
+  }
+
+  // The ingestion behavior.
+  IngestMode mode = 1;
+  // The table to load data into.
+  string table = 2;
+  // The db_schema of the destination table to load data into. If unset, a 
backend-specific default may be used.
+  optional string schema = 3;
+  // The catalog of the destination table to load data into. If unset, a 
backend-specific default may be used.
+  optional string catalog = 4;
+  /*
+   * Store ingested data in a temporary table.
+   * Leaving temporary unspecified is equivalent to temporary=false.
+   * The effect of setting temporary depends on the choice of IngestMode:
+   *  - INGEST_MODE_CREATE: Create a temp table. Fail if it already exists.
+   *  - INGEST_MODE_APPEND: Add the following validations to the existing 
INGEST_MODE_APPEND behavior:
+   *    - temporary=true  - Use temporary target table with the given name, 
error if none exists
+   *    - temporary=false - Use non-temporary target table with the given 
name, error if none exists
+   *  - INGEST_MODE_REPLACE: Drop the temp table if it exists. Then follow 
INGEST_MODE_CREATE behavior.
+   *  - INGEST_MODE_CREATE_APPEND: Create a temp table if it does not exist. 
Then follow INGEST_MODE_APPEND behavior.
+  */
+  optional bool temporary = 5;

Review Comment:
   Would perhaps `use_temporary_table` be a better name? And we can remove the 
docstring and instead clarify that it's equivalent to setting a 
database-specific catalog/schema pair (i.e. it does not matter if another table 
exists with the same name in a different catalog/schema).



-- 
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: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to