-
Notifications
You must be signed in to change notification settings - Fork 36
Description
A useful feature would be to be able to set shorter (or longer!) deadlines on potentially long running operations, specifically SELECT but also INSERT WHERE SELECT, UPDATE and COMMIT.
For example, the default SELECT deadline (ExecuteStreamingSQL) is 3600s or 1hr. This means that if a user executes a SELECT with a full table scan on a large table, it could continue running for up to an hour without the database being aware that, the user has attempted to cancel it by killing the Spanner-CLI process. One can imagine a scenario where a user gets impatient, kills the client process and tries again several times this loading the DB without realising.
(This is unlike other DB engines which use a TCP connection to the CLI client, so that the server can detect when a client has been killed, and terminate any queries),
Suggestion:
- Set a shorter deadline for potentially long running APIs by default (the console UI uses 5 mins)
- When a DEADLINE EXCEEDED error is raised, report the error with some text indicating that the deadline can be extended (and how)