Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
64894: sql/event_log: reduce tech debt, simplify and fix bugs r=rafiss a=knz Fixes #64685. First commit from #64871. Prior to this patch, there was a little mess in `sql/event_log.go` that had been introduced when "optimizing" GRANT/REVOKE to only use one write batch for all the events logged: - a lot of code had been duplicated; - the control flow had been rendered more complex; - the API interface for the functions in event_log.go were complex to use, requiring callers to provide descriptor IDs and structured events as separate slices; - the optimizing logic was not properly applied to the other case where multiple events are emitted: SQL audit logging in `exec_log.go`. This patch streamlines this by reducing `event_log.go` back to its simpler form: an overall event refinement pipeline with a straightforward control flow. To guide future maintainers, the patch also adds an explanatory comment at the top of the file that sketches the overall structure of the pipeline. Finally, this patch fixes a bug introduced when query logging started using structured events: the ability to automatically copy all the execution events to the DEV channel when setting the `vmodule` setting to `exec_log=2` (or above). In addition to fixing that bug, the following new vmodule-based abilities are added: - events for DDL statements and others that call `logEvent()` can now be collected in the DEV channel by using the name of the source file where they were generated as filter (e.g. `vmodule=create_table=2` for the CREATE TABLE events. - events of other kinds can be collected in the DEV channel by setting `vmodule=event_log=2`. (Note a subtle difference between `vmodule=create_table=2` and `vmodule=exec_log=2`: the former emits the event to the DEV channel while the stmt is executed; the latter emits the event after the stmt completes. If both are enabled, TWO events are sent to the DEV channel.) Since all the vmodule filtering options are subject to change without notice between versions, we do not wish to document these nuances. For this reason, the release note below is left blank. Release note: None Co-authored-by: Raphael 'kena' Poss <[email protected]>
- Loading branch information