You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a reminder, we recently fixed an ExecuteFetchAsDBA issue where:
ExecuteFetchAsDBA would allow multiple queries in a single call.
The error result was only checked for the first query, ignored for 2nd, 3rd, ... queries.
Query results for 2nd, 3rd, ... queries were left unconsumed, and returned with the connection back into the pool, thereby leaking results into other users of the pool.
However, the work is incomplete. We had to exclude a specific use case in rpc_query.go: ApplySchema can execute potentially multiple DDLs and runs these via ExecuteFetchAsDBA.
The roadmap to the complete fix is:
v20:
Introduce a ExecuteMultiFetchAsDba gRPC call, which safely runs multiple statements, checks error and breaks on first error, and returns multiple result sets.
Introduce a vtctldclient ExecuteMultiFetchAsDBA command, which calls ExecuteMultiFetchAsDba gRPC method and returns a list of result sets.
v21:
(skipped/delayed to next version)
v22:
ApplySchema()/TabletExecutor to use ExecuteMultiFetchAsDba instead of ExecuteFetchAsDba.
v23:
ExecuteFetchAsDBA in rpc_query.go to disallow any form of multiple queries.
Use Case(s)
The text was updated successfully, but these errors were encountered:
Feature Description
As a reminder, we recently fixed an
ExecuteFetchAsDBA
issue where:ExecuteFetchAsDBA
would allow multiple queries in a single call.The fix included:
ExecuteFetch
, andrpc_query.go
.However, the work is incomplete. We had to exclude a specific use case in
rpc_query.go
:ApplySchema
can execute potentially multiple DDLs and runs these viaExecuteFetchAsDBA
.The roadmap to the complete fix is:
v20
:ExecuteMultiFetchAsDba
gRPC call, which safely runs multiple statements, checks error and breaks on first error, and returns multiple result sets.vtctldclient ExecuteMultiFetchAsDBA
command, which callsExecuteMultiFetchAsDba
gRPC method and returns a list of result sets.v21:
(skipped/delayed to next version)
v22
:ApplySchema()
/TabletExecutor
to useExecuteMultiFetchAsDba
instead ofExecuteFetchAsDba
.v23
:ExecuteFetchAsDBA
inrpc_query.go
to disallow any form of multiple queries.Use Case(s)
The text was updated successfully, but these errors were encountered: