Skip to content

Commit

Permalink
Prepare schema tracking for all UDFs (#15732)
Browse files Browse the repository at this point in the history
  • Loading branch information
systay committed Apr 18, 2024
1 parent f11de06 commit 64d9037
Show file tree
Hide file tree
Showing 18 changed files with 1,328 additions and 287 deletions.
9 changes: 8 additions & 1 deletion changelog/20.0/20.0.0/summary.md
Expand Up @@ -25,6 +25,7 @@
- **[Flag changes](#flag-changes)**
- [`pprof-http` default change](#pprof-http-default)
- [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag)
- [New `track-udfs` vtgate flag](#vtgate-track-udfs-flag)
- **[Minor Changes](#minor-changes)**
- **[New Stats](#new-stats)**
- [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses)
Expand Down Expand Up @@ -189,7 +190,9 @@ More details about how it works is available in [MySQL Docs](https://dev.mysql.c
VTGate can track any user defined functions for better planning.
User Defined Functions (UDFs) should be directly loaded in the underlying MySQL.

It should be enabled in VTGate with the `--enable-udfs` flag.
It should be enabled in VTGate with the `--track-udfs` flag.
This will enable the tracking of UDFs in VTGate and will be used for planning.
Without this flag, VTGate will not be aware that there might be aggregating user-defined functions in the query that need to be pushed down to MySQL.

More details about how to load UDFs is available in [MySQL Docs](https://dev.mysql.com/doc/extending-mysql/8.0/en/adding-loadable-function.html)

Expand All @@ -205,6 +208,10 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin

The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended.

#### <a id="vtgate-track-udfs-flag"/>New `--track-udfs` vtgate flag

The new `--track-udfs` flag enables VTGate to track user defined functions for better planning.

## <a id="minor-changes"/>Minor Changes

### <a id="new-stats"/>New Stats
Expand Down
2 changes: 1 addition & 1 deletion go/flags/endtoend/flags_test.go
Expand Up @@ -118,7 +118,7 @@ var (
func TestHelpOutput(t *testing.T) {
wd, err := os.Getwd()
require.NoError(t, err)

t.Parallel()
args := []string{"--help"}
for binary, helptext := range helpOutput {
t.Run(binary, func(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion go/flags/endtoend/vtcombo.txt
Expand Up @@ -115,7 +115,6 @@ Flags:
--enable-partial-keyspace-migration (Experimental) Follow shard routing rules: enable only while migrating a keyspace shard by shard. See documentation on Partial MoveTables for more. (default false)
--enable-per-workload-table-metrics If true, query counts and query error metrics include a label that identifies the workload
--enable-tx-throttler Synonym to -enable_tx_throttler
--enable-udfs Enable UDFs support in vtgate.
--enable-views Enable views support in vtgate.
--enable_buffer Enable buffering (stalling) of primary traffic during failovers.
--enable_buffer_dry_run Detect and log failover events, but do not actually buffer requests.
Expand Down Expand Up @@ -377,6 +376,7 @@ Flags:
--tracing-enable-logging whether to enable logging in the tracing service
--tracing-sampling-rate float sampling rate for the probabilistic jaeger sampler (default 0.1)
--tracing-sampling-type string sampling strategy to use for jaeger. possible values are 'const', 'probabilistic', 'rateLimiting', or 'remote' (default "const")
--track-udfs Track UDFs in vtgate.
--track_schema_versions When enabled, vttablet will store versions of schemas at each position that a DDL is applied and allow retrieval of the schema corresponding to a position
--transaction-log-stream-handler string URL handler for streaming transactions log (default "/debug/txlog")
--transaction_limit_by_component Include CallerID.component when considering who the user is for the purpose of transaction limit.
Expand Down
2 changes: 1 addition & 1 deletion go/flags/endtoend/vtgate.txt
Expand Up @@ -54,7 +54,6 @@ Flags:
--discovery_low_replication_lag duration Threshold below which replication lag is considered low enough to be healthy. (default 30s)
--emit_stats If set, emit stats to push-based monitoring and stats backends
--enable-partial-keyspace-migration (Experimental) Follow shard routing rules: enable only while migrating a keyspace shard by shard. See documentation on Partial MoveTables for more. (default false)
--enable-udfs Enable UDFs support in vtgate.
--enable-views Enable views support in vtgate.
--enable_buffer Enable buffering (stalling) of primary traffic during failovers.
--enable_buffer_dry_run Detect and log failover events, but do not actually buffer requests.
Expand Down Expand Up @@ -229,6 +228,7 @@ Flags:
--tracing-enable-logging whether to enable logging in the tracing service
--tracing-sampling-rate float sampling rate for the probabilistic jaeger sampler (default 0.1)
--tracing-sampling-type string sampling strategy to use for jaeger. possible values are 'const', 'probabilistic', 'rateLimiting', or 'remote' (default "const")
--track-udfs Track UDFs in vtgate.
--transaction_mode string SINGLE: disallow multi-db transactions, MULTI: allow multi-db transactions with best effort commit, TWOPC: allow multi-db transactions with 2pc commit (default "MULTI")
--truncate-error-len int truncate errors sent to client if they are longer than this value (0 means do not truncate)
--v Level log level for V logs
Expand Down

0 comments on commit 64d9037

Please sign in to comment.