lidavidm commented on code in PR #38385:
URL: https://github.com/apache/arrow/pull/38385#discussion_r1391257587
##########
format/FlightSql.proto:
##########
@@ -1779,9 +1796,61 @@ 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.
+ * With the exception of INGEST_MODE_APPEND, leaving temporary unspecified
is equivalent to temporary=false.
Review Comment:
> My impression is that clients would expect they can just use a temp table
without having to qualify it explicitly as long as the session is still open.
I'd lean towards protocol consistency over direct end-user use, though.
Flight SQL isn't meant to be exposed to users in the same way that JDBC/ODBC
are.
For ADBC, not specifying it is equivalent to temporary = false.
> Without the special handling of this case there could also be a mismatch
with other commands such as CommandStatementQuery which don't have a temporary
parameter.
SQL semantics are different, though, and up to each individual database. The
point of adding this message is to avoid SQL semantics. (Also, there's
Substrait, not just SQL.)
--
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]