Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vttablet schema tracking: Fix _vt.schema_version corruption #13045

Merged
merged 8 commits into from
Jun 19, 2023

Conversation

brendar
Copy link
Contributor

@brendar brendar commented May 8, 2023

Description

This PR fixes a race condition which caused protobuf marshaled schema data in _vt.schema_version rows to become corrupted when the ColumnType of query.Field pointers was modified between the time when Field message sizes were calculated and when Field message data was written to the buffer.

On Vitess versions <= 16, the race condition leads to invalid protobuf data being written to the schema_version table. When the schema historian tries to unmarshal the data it encounters an error, which breaks schema tracking on running tablets, and prevents newly started tablets from serving.

On Vitess main the race condition leads to a panic and the schema_version row is never written. This is due to the switch to using MarshalVT in #12525

I'm proposing to fix this by copying the fields returned from schema.Engine before modifying them. As far as I can tell, nothing relied on the side effect of setting ColumnType on the shared fields.

This PR also includes a defensive change to acquire the schema.Engine mutex while marshaling the schema to protobuf. This is not strictly necessary to fix the bug, but it could help avoid future race conditions or ones that haven't been discovered yet. I would be happy to remove it if anyone feels that it's unnecessary.

This bug was pretty disruptive for us, so I think the fix should be backported, but note that if it is backported, it may be desirable to change the call to MarshalVT back to proto.Marshal to match the existing code in released versions.

Related Issue(s)

Fixes #12981

Checklist

  • "Backport to:" labels have been added if this change should be back-ported
  • Tests were added or are not required
  • Did the new or modified tests pass consistently locally and on the CI
  • Documentation was added or is not required

Deployment Notes

Copy link
Contributor

@mattlord mattlord left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good! I only had a few minor comments/requests. Please let me know if I'm missing something. I'll quickly approve once that's resolved.

Then we'll need someone from Query Serving to take a quick look as well.

Thank you for the contribution, @brendar! ❤️

go/vt/vttablet/tabletserver/schema/engine.go Outdated Show resolved Hide resolved
go/vt/vttablet/tabletserver/schema/engine.go Outdated Show resolved Hide resolved
@mattlord
Copy link
Contributor

Lastly, if you merge in latest vitessio/main then you'll get fixes for the unit_race workflow that's failing.

@deepthi
Copy link
Member

deepthi commented May 18, 2023

This bug was pretty disruptive for us, so I think the fix should be backported, but note that if it is backported, it may be desirable to change the call to MarshalVT back to proto.Marshal to match the existing code in released versions.

Agreed. However, the backport will need to be done manually, so I'm going to remove the label.

Copy link
Member

@harshit-gangal harshit-gangal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes look good.

rohit-nayak-ps
rohit-nayak-ps previously approved these changes May 19, 2023
Copy link
Contributor

@rohit-nayak-ps rohit-nayak-ps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acquiring the schema engine mutex while marshalling makes sense.
Thanks for fixing this tricky race condition!

@austenLacy austenLacy force-pushed the fix-vt-schema_version-corruption branch from 582d6fe to ee3c5f7 Compare May 24, 2023 15:44
@austenLacy
Copy link
Contributor

@mattlord can we get another 👀 on this when you have a chance? 🙇

@mattlord
Copy link
Contributor

@austenLacy can you please merge in vitessio/main? That should resolve the unit_race workflow failures.

The static code check workflow is also failing: https://github.com/vitessio/vitess/actions/runs/5070727297/jobs/9106509343?pr=13045

Otherwise it's good! Once the tests are passing I'll approve and merge. ❤️

@austenLacy
Copy link
Contributor

@mattlord fixed the gofmt issue and rebased off f5a460c.

$ git rev-parse --abbrev-ref HEAD
fix-vt-schema_version-corruption

$ git log --pretty=oneline f5a460ca4a73f5750c2262efc5663d9de04a31ac^..HEAD
8887af88c771dba36d6d65d0cca16479a0ec01e2 (HEAD -> fix-vt-schema_version-corruption) gofmt
50186f23971401a4692a17caaab7f3d8a9e33bf8 reorganize imports and allocate slices with make
7cdbb99196750a2baf6d9bda545c4d37503be51b Acquire schema engine mutex while marshaling schema
607031f753b1421f313d2e9da074fda9a883b2fc Copy fields from schema.Engine before modifying
f5a460ca4a73f5750c2262efc5663d9de04a31ac (origin/main, origin/HEAD) VReplication: Do not delete sharded target vschema table entries on Cancel (#13146)

@mattlord
Copy link
Contributor

mattlord commented May 25, 2023

The changes in this PR are causing this test failure:

$ go test -count 1 -timeout 30s -run ^TestVStreamCopyCompleteFlow$ vitess.io/vitess/go/vt/vttablet/tabletserver/vstreamer

Summary:

--- FAIL: TestVStreamCopyCompleteFlow (2.18s)
    uvstreamer_flaky_test.go:316: Event 2 did not match, want

WANT:
type:FIELD field_event:{table_name:"t1" fields:{name:"id11" type:INT32 table:"t1" org_table:"t1" database:"vttest" org_name:"id11" column_length:11 charset:63 column_type:"int"} fields:{name:"id12" type:INT32 table:"t1" org_table:"t1" database:"vttest" org_name:"id12" column_length:11 charset:63 column_type:"int"}}

GOT:
type:FIELD field_event:{table_name:"t1" fields:{name:"id11" type:INT32 table:"t1" org_table:"t1" database:"vttest" org_name:"id11" column_length:11 charset:63} fields:{name:"id12" type:INT32 table:"t1" org_table:"t1" database:"vttest" org_name:"id12" column_length:11 charset:63}} keyspace:"vttest" shard:"0"

E0525 16:42:38.247619   51270 vstreamer.go:1015] stream (at source tablet) error @ 239a1164-fb1b-11ed-8845-6045bda98c87:1-139: cannot determine table columns for ddl_test2: event has [3 15 15], schema has [name:"id" type:INT32 table:"ddl_test2" org_table:"ddl_test2" database:"vttest" org_name:"id" column_length:11 charset:63 flags:53251 name:"val1" type:VARBINARY table:"ddl_test2" org_table:"ddl_test2" database:"vttest" org_name:"val1" column_length:128 charset:63 flags:128]

@austenLacy austenLacy force-pushed the fix-vt-schema_version-corruption branch 2 times, most recently from c58e2a9 to feba91a Compare May 26, 2023 13:07
@austenLacy
Copy link
Contributor

@rohit-nayak-ps

Can you take another look at this when you have a moment? There were some unit tests failing in uvstreamer_flakey_test.go that were definitely caused by my changes since they pass on main. I fixed them by modifying the expectations in the tests in feba91a, but I'm not familiar enough with the vstreamer and uvstreamer tests to know if that was the right thing to do or not.

Something that I also noticed was that the expected events in the uvstreamer and vstreamer tests are not the same.

vstreamer_flaky_test.go (doesn't have the column_type field in the event)

"type:FIELD field_event:{table_name:\"t1\" fields:{name:\"id1\" type:INT32 table:\"t1\" org_table:\"t1\" database:\"vttest\" org_name:\"id1\" column_length:11 charset:63} fields:{name:\"id2\" type:INT32 table:\"t1\" org_table:\"t1\" database:\"vttest\" org_name:\"id2\" column_length:11 charset:63}}",

uvstreamer_flaky_test.go (includes the column_type field)

"type:FIELD field_event:{table_name:\"t1\" fields:{name:\"id11\" type:INT32 table:\"t1\" org_table:\"t1\" database:\"vttest\" org_name:\"id11\" column_length:11 charset:63 column_type:\"int(11)\"} fields:{name:\"id12\" type:INT32 table:\"t1\" org_table:\"t1\" database:\"vttest\" org_name:\"id12\" column_length:11 charset:63 column_type:\"int(11)\"}}",

Is it possible the race condition of updating the ColumnType on the original Field was being worked around in the uvstreamer tests by adding it to the expected events?

@rohit-nayak-ps rohit-nayak-ps dismissed their stale review May 31, 2023 09:58

Will rereview after the unit test failure is investigated.

@rohit-nayak-ps
Copy link
Contributor

Is it possible the race condition of updating the ColumnType on the original Field was being worked around in the uvstreamer tests by adding it to the expected events?

Hmm, if that were true and if normally the ColumnType attribute was not set, the test should be erroring out very often, right? That is not what we see in CI.

Also, are you saying that ColumnType should not being set in the vstreamer in that test?

fields = st.Fields[:len(tm.Types)]
	extColInfos, err := vs.getExtColInfos(tm.Name, tm.Database)
	if err != nil {
		return nil, err
	}
	for _, field := range fields {
		// we want the MySQL column type info so that we can properly handle
		// ambiguous binlog events and other cases where the internal types
		// don't match the MySQL column type. One example being that in binlog
		// events CHAR columns with a binary collation are indistinguishable
		// from BINARY columns.
		if extColInfo, ok := extColInfos[field.Name]; ok {
			field.ColumnType = extColInfo.columnType
		}
	}
	return fields, nil

@austenLacy
Copy link
Contributor

austenLacy commented May 31, 2023

Also, are you saying that ColumnType should not being set in the vstreamer in that test?

@rohit-nayak-ps

I can't say for sure because I'm not super familiar with the differences between vstreamer and uvstreamer. Do you know why some of the events would have the ColumnType, but others don't?

@rohit-nayak-ps
Copy link
Contributor

@austenLacy, @brendar, I debugged this branch and figured out the issue. You were right: there is a (planned) side-effect of the previous code that has caused the test to fail.

The rowstreamer also generates vevents in the copy phase. It was using the fields directly from the tablet's schema engine tables collection in its FieldEvent. The vstreamer used to first populate the ColumnInfo attribute of this collection in the vstreamers buildTablePlan. Now that we are cloning Fields in this PR the rowstreamer is no longer seeing the ColumnInfo since we no longer update the schema engine's tables.

So we need to modify rowstreamer as well to call getExtColInfos() and update that attribute before sending the field event. Some amount of refactor will be needed since getExtColInfos() is scoped only to vstreamer right now. It might also require other unit tests to be modified.

I can also work on this, but it will be a week or so before I can get to this since we have a Vitess v17 release coming up and I also have a couple of urgent issues on my plate at the moment. Let me know ...

brendar and others added 5 commits June 13, 2023 09:49
This change is purely defensive, but it may help avoid future
race conditions caused by modifying shared schema structs while
they are being marshaled to protobuf.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
…m events in a thread-safe fashion. Fix related tests

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
@austenLacy austenLacy force-pushed the fix-vt-schema_version-corruption branch from 0d8ba29 to 6b2e1dc Compare June 13, 2023 13:50
}

ti.Fields, err = getFields(rs.ctx, rs.cp, st.Name, rs.vschema.keyspace, st.Fields)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passing rs.vschema.keyspace may be problematic if the underlying database name is different from the keyspace name.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Sorry, I had caught it in the vstreamer call but forgot to update the rowstreamer one. Fixed here: 700e2dd

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done in 48fd6ee

Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
@austenLacy
Copy link
Contributor

@rohit-nayak-ps I've updated the PR with your PR's latest commits and all checks are ✅ 🎉

Copy link
Contributor

@rohit-nayak-ps rohit-nayak-ps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm
Thank you for the PR!

Copy link
Contributor

@mattlord mattlord left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❤️

@mattlord mattlord merged commit 99a65d1 into vitessio:main Jun 19, 2023
@austenLacy austenLacy deleted the fix-vt-schema_version-corruption branch June 20, 2023 13:02
frouioui pushed a commit that referenced this pull request Sep 18, 2023
* Copy fields from schema.Engine before modifying

This fixes a race condition which caused protobuf marshaled schema
data in _vt.schema_version rows to become corrupted when ColumnType was
modified between the time when Field message sizes were calculated
and when Field message data was written to the buffer.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* Acquire schema engine mutex while marshaling schema

This change is purely defensive, but it may help avoid future
race conditions caused by modifying shared schema structs while
they are being marshaled to protobuf.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* reorganize imports and allocate slices with make

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* gofmt

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* flakey unit test

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* Use common code to update column_type for both vstreamer and rowstream events in a thread-safe fashion. Fix related tests

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Use DBName and not keyspace name while getting extended field info!

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Fix TestVStreamSharded

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

---------

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Co-authored-by: Austen Lacy <austen.lacy@shopify.com>
Co-authored-by: Rohit Nayak <rohit@planetscale.com>
Signed-off-by: Florent Poinsard <florent.poinsard@outlook.fr>
frouioui pushed a commit that referenced this pull request Sep 18, 2023
* Copy fields from schema.Engine before modifying

This fixes a race condition which caused protobuf marshaled schema
data in _vt.schema_version rows to become corrupted when ColumnType was
modified between the time when Field message sizes were calculated
and when Field message data was written to the buffer.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* Acquire schema engine mutex while marshaling schema

This change is purely defensive, but it may help avoid future
race conditions caused by modifying shared schema structs while
they are being marshaled to protobuf.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* reorganize imports and allocate slices with make

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* gofmt

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* flakey unit test

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* Use common code to update column_type for both vstreamer and rowstream events in a thread-safe fashion. Fix related tests

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Use DBName and not keyspace name while getting extended field info!

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Fix TestVStreamSharded

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

---------

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Co-authored-by: Austen Lacy <austen.lacy@shopify.com>
Co-authored-by: Rohit Nayak <rohit@planetscale.com>
frouioui pushed a commit that referenced this pull request Sep 18, 2023
* Copy fields from schema.Engine before modifying

This fixes a race condition which caused protobuf marshaled schema
data in _vt.schema_version rows to become corrupted when ColumnType was
modified between the time when Field message sizes were calculated
and when Field message data was written to the buffer.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* Acquire schema engine mutex while marshaling schema

This change is purely defensive, but it may help avoid future
race conditions caused by modifying shared schema structs while
they are being marshaled to protobuf.

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>

* reorganize imports and allocate slices with make

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* gofmt

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* flakey unit test

Signed-off-by: Austen Lacy <austen.lacy@shopify.com>

* Use common code to update column_type for both vstreamer and rowstream events in a thread-safe fashion. Fix related tests

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Use DBName and not keyspace name while getting extended field info!

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

* Fix TestVStreamSharded

Signed-off-by: Rohit Nayak <rohit@planetscale.com>

---------

Signed-off-by: Brendan Dougherty <brendan.dougherty@shopify.com>
Signed-off-by: Austen Lacy <austen.lacy@shopify.com>
Signed-off-by: Rohit Nayak <rohit@planetscale.com>
Co-authored-by: Austen Lacy <austen.lacy@shopify.com>
Co-authored-by: Rohit Nayak <rohit@planetscale.com>
JiekerTime pushed a commit to JiekerTime/vitess that referenced this pull request Mar 8, 2024
* fix conflicts

* merge origin v18.0.0

* Back to dev mode after v18.0.0 (vitessio#14475)

* Release of v18.0.0 (vitessio#14406)

* [release-18.0] VReplication: Handle multiple streams in UpdateVReplicationWorkflow RPC (vitessio#14447) (vitessio#14468)

* [release-18.0] VDiff: "show all" should only report vdiffs for the specified keyspace and workflow (vitessio#14442) (vitessio#14466)

* [release-18.0] TestStreamMigrateMainflow: fix panic in test (vitessio#14425)

* [release-18.0] vtgate: Allow more errors for the warning check (vitessio#14421) (vitessio#14423)

* [release-18.0] servenv: Remove double close() logic (vitessio#14457) (vitessio#14459)

* [release-18.0] viper: register dynamic config with both disk and live (vitessio#14453) (vitessio#14455)

* [release-18.0] vtgate/engine: Fix race condition in join logic (vitessio#14435) (vitessio#14441)

* tx_throttler: remove topo watchers metric (vitessio#14444)

* [release-18.0] VDiff tablet selection: pick non-serving tablets in Reshard workflows (vitessio#14413) (vitessio#14418)

* Code freeze of release-18.0 (vitessio#14405)

* [release-18.0] Online DDL: lint DDL strategy flags (vitessio#14373) (vitessio#14399)

* [release-18.0] tuple: serialized form (vitessio#14392) (vitessio#14394)

* [release-18.0] schemadiff: fix missing `DROP CONSTRAINT` in duplicate/redundant constraints scenario. (vitessio#14387) (vitessio#14391)

* [release-18.0] Performance Fixes for Vitess 18 (vitessio#14383) (vitessio#14393)

* [release-18.0] Vtctld SwitchReads: fix bug where writes were also being switched as part of switching reads when all traffic was switched using SwitchTraffic (vitessio#14360) (vitessio#14379)

* [release-18.0] VDiff: wait for shard streams of one table diff to complete for before starting that of the next table (vitessio#14345) (vitessio#14382)

* [release-18.0] [Docker] Fix VTadmin build  (vitessio#14363) (vitessio#14378)

* [release-18.0] Fix backup on s3 like storage (vitessio#14311) (vitessio#14362)

* [release-18.0] use aggregation engine over distinct engine when overlapping order by (vitessio#14359) (vitessio#14361)

* [release-18.0] Automatic approval of `vitess-bot` clean backports (vitessio#14352) (vitessio#14357)

* [release-18.0] evalengine: Misc bugs (vitessio#14351) (vitessio#14354)

* [release-18.0] OnlineDDL: reduce vrepl_stress workload in forks (vitessio#14302) (vitessio#14349)

* [release-18.0] VReplication: Add --all-cells flag to create sub-commands (vitessio#14341) (vitessio#14343)

* [release-18.0] Incremental backup: fix race condition in reading 'mysqlbinlog' output (vitessio#14330) (vitessio#14335)

* [release-18.0] release notes: edit summary for consistency (vitessio#14319) (vitessio#14320)

* [release-18.0] Bump @babel/traverse from 7.21.4 to 7.23.2 in /web/vtadmin (vitessio#14304) (vitessio#14308)

* [release-18.0] Rename Foreign Key enum values in VSchema  and drop `FK_` prefix (vitessio#14274) (vitessio#14299)

* [release-18.0] VReplication: error on vtctldclient commands w/o tablet types (vitessio#14294) (vitessio#14298)

* [release-18.0] Make vtctldclient mount command more standard (vitessio#14281) (vitessio#14283)

* [release-18.0] VReplication: Add traffic state to vtctldclient workflow status output (vitessio#14280) (vitessio#14282)

* [release-18.0] fix: analyze statement parsing and planning (vitessio#14268) (vitessio#14275)

* [release-18.0] Bypass cobra completion commands so they still function (vitessio#14217) (vitessio#14234)

* [release-18.0] Bump golang.org/x/net from 0.14.0 to 0.17.0 (vitessio#14260) (vitessio#14264)

* Add vtctldclient info to the 18.0 summary (vitessio#14259)

* [release-18.0] Bump postcss from 8.4.21 to 8.4.31 in /web/vtadmin (vitessio#14173) (vitessio#14258)

* [release-18.0] Bump github.com/cyphar/filepath-securejoin from 0.2.3 to 0.2.4 (vitessio#14239) (vitessio#14253)

* [release-18.0] Tablet throttler: fix race condition by removing goroutine call (vitessio#14179) (vitessio#14198)

* [release-18.0] fix:  insert with negative value (vitessio#14244) (vitessio#14247)

* [release-18.0] Fix anonymous paths in cobra code-gen (vitessio#14185) (vitessio#14238)

* [release-18.0] Throttler: set timeouts on gRPC communication and on topo communication (vitessio#14165) (vitessio#14167)

* [release-18.0] Move all examples to vtctldclient (vitessio#14226) (vitessio#14241)

* [release-18.0] VReplication: Add missing info to vtctldclient workflow SHOW output (vitessio#14225) (vitessio#14240)

* [release-18.0] Upgrade the Golang version to `go1.21.3` (vitessio#14230)

* [release-18.0] Optimize the GetWorkflows RPC (vitessio#14212) (vitessio#14233)

* [Release 18.0]: Online DDL: timeouts for all gRPC calls (vitessio#14182) (vitessio#14189)

* [release-18.0] Migrate Materialize command to vtctldclient (vitessio#14184) (vitessio#14214)

* [Release 18.0] Backport  of vitessio#17174 (vitessio#14210)

* [release-18.0] Upgrade the Golang version to `go1.21.2` (vitessio#14195)

* [release-18.0] Migrate CreateLookupVindex and ExternalizeVindex to vtctldclient (vitessio#14086) (vitessio#14183)

* Back to dev mode after `v18.0.0-rc1` release (vitessio#14169)

* Release of v18.0.0-rc1 (vitessio#14136)

* [release-18.0] docker: add dedicated vtorc container (vitessio#14126) (vitessio#14148)

* [release-18.0] gen4: Support explicit column aliases on derived tables (vitessio#14129) (vitessio#14156)

* Code freeze of release-18.0 (vitessio#14131)

* VTGate FK stress tests suite: improvements (vitessio#14098)

* DDL execution to commit open transaction (vitessio#14110)

* Summary changes for foreign keys (vitessio#14112)

* Move subqueries to use the operator model (vitessio#13750)

* servenv: Allow for explicit bind address (vitessio#13188)

* vtorc: add detected_problems counter (vitessio#13967)

* fix bad copy-paste in zkctld docgen (vitessio#14123)

* VDiff: Cleanup the controller for a VDiff before deleting it (vitessio#14107)

* Remove deprecated flags before `v18.0.0` (vitessio#14071)

* Remove FOSSA Test from CI until we can do it in a secure way (vitessio#14119)

* go/cmd/vtbackup: wait for plugins to finish initializing (vitessio#14113)

* bugfix: change column name and type to json (vitessio#14093)

* `vtctld`/`vtorc`: improve reparenting stats (vitessio#13723)

* E2E Fuzzing testing for foreign keys (vitessio#13980)

* Backup/restore: provision and restore a tablet with point-in-time recovery flags (vitessio#13964)

* anonymize homedirs in generated docs (vitessio#14101)

* VDiff: properly split cell values in record when using TabletPicker (vitessio#14099)

* miscellaneous cobras (vitessio#14069)

* Reduce network pressure on multi row insert (vitessio#14064)

* [cli] cobra zookeeper (vitessio#14094)

* switch casing in onlineddl subcommand help text (vitessio#14091)

* Fix Fk verification and update queries to accommodate for bindVariables being NULL (vitessio#14061)

* actually test vtcombo (vitessio#14095)

* VDiff: Migrate client command to vtctldclient (vitessio#13976)

* ci: pool-related test flakyness (vitessio#14076)

* Improve the rewriter to simplify more queries (vitessio#14059)

* update docgen to embed commit ID in autogenerated doc frontmatter (vitessio#14056)

* [CLI] cobra lots of things (vitessio#14007)

* Add VSchema DDL support for dropping sequence and auto increment (vitessio#13882)

* json: Fix quoting JSON keys (vitessio#14066)

* Flakes: Address TestMigrate Failures (vitessio#12866)

* [cli] migrate mysqlctl and mysqlctld to cobra (vitessio#13946)

* evalengine: Mark UUID() function as non-constant (vitessio#14051)

* Fix cascading Delete failure while using Prepared statements (vitessio#14048)

* remove query_analyzer binary and release (vitessio#14055)

* go/vt/mysqlctl: instrument s3 upload time (vitessio#12500)

* Add session flag for stream execute grpc api (vitessio#14046)

* Endtoend: stress tests for VTGate FOREIGN KEY support (vitessio#13799)

* metrics: change vtbackup_duration_by_phase to binary-valued vtbackup_phase (vitessio#12973)

* TableGC: support DROP VIEW (vitessio#14020)

* Support arbitrary ZooKeeper config lines (vitessio#13829)

* Bump protobufjs from 7.2.3 to 7.2.5 in /web/vtadmin (vitessio#13833)

* Bump tough-cookie and @cypress/request in /vitess-mixin/e2e (vitessio#13768)

* Remove excessive logging in transactions (vitessio#14021)

* Fix bug in `fileNameFromPosition` test helper (vitessio#13778)

* MoveTables Cancel: drop denied tables on target when dropping source/target tables (vitessio#14008)

* java: update to latest dependencies for grpc and protobuf (vitessio#13996)

* OnlineDDL: cleanup cancelled migration artifacts; support `--retain-artifacts=<duration>` DDL strategy flag (vitessio#14029)

* moved timeout test to different package (vitessio#14028)

* fix: cost to include subshard opcode (vitessio#14023)

* VReplication VPlayer: set foreign_key_checks on initialization (vitessio#14013)

* go/cmd/vtbackup: report replication status metrics during catch-up phase (vitessio#13995)

* Fix the `SELECT` query we run on the child table to verify that update is allowed on a RESTRICT constraint (vitessio#13991)

* fix data race in join engine primitive olap streaming mode execution (vitessio#14012)

* test: added test to check binlogs to contain the cascade events (vitessio#13970)

* Fix `TestLeftJoinUsingUnsharded` and remove instability when running E2E locally (vitessio#13973)

* Enable failures in `tools/e2e_test_race.sh` and fix races (vitessio#13654)

* Improve release process documentation (vitessio#14000)

* Make `Static Code Checks Etc` fail if the `./changelog` folder is out-of-date (vitessio#14003)

* Fix foreign key plan tests expectation (vitessio#13997)

* Flakes: Add recently added 'select rows_copied' query to ignore list (vitessio#13993)

* Foreign key cascade: retain "for update" lock on select query plans (vitessio#13985)

* Fix `NOT IN` expression used in the SET NULL for a child table on an update  (vitessio#13988)

* consolidate docs (vitessio#13959)

* VDiff: correct handling of default source and target cells (vitessio#13969)

* [cobra] vtgate and vttablet (vitessio#13943)

* handle large number of predicates without timing out (vitessio#13979)

* Fix missing deprecated flags in `vttablet` and `vtgate` (vitessio#13975)

* wrangler,workflow/workflow: materialize from intersecting source shards based on primary vindexes (vitessio#13782)

* Cache v3 (vitessio#13939)

* Implement Reshard in vtctldclient (vitessio#13792)

* Disallow Insert with Duplicate key update and Replace Into queries on foreign key column, set locks on fk queries (vitessio#13953)

* End to end testing suite for foreign keys (vitessio#13870)

* copy over existing vreplication rows copied to local counter if resuming from another tablet (vitessio#13949)

* vtctldclient OnlineDDL: support `throttle`, `unthrottle` (vitessio#13916)

* Change internal vindex type recommendation for integrals to xxhash (vitessio#13956)

* VTOrc converts a tablet to DRAINED type if it detects errant GTIDs on it (vitessio#13873)

* Fix `ApplySchema --batch-size` with ` --allow-zero-in-date` (vitessio#13951)

* Tablet throttler: empty list of probes on non-leader (vitessio#13926)

* VReplication: Handle SQL NULL and JSON 'null' correctly for JSON columns (vitessio#13944)

* [vtctld] more cobra binaries (vitessio#13930)

* Merge branch 'planetscale-fk-verify-update-planning'

* [main] Upgrade the Golang version to `go1.21.1` (vitessio#13933)

* update fk error messages

* cascade with new value should work

* small refactor - removed unused code

* return verify error based on type

* store the verification type

* update plan output test

* small refactor

* feat: add code to verify valdity of ON UPDATE RESTRICT foreign keys wherever required

* Rewrite `USING` to `ON` condition for joins (vitessio#13931)

* test: fix tests to reflect the recent changes

* feat: add code to verify update with cascade run with foreign key checks 0 and validate all the foreign keys on vtgate

* add where condition to fk verify query

* changed parent verification query and accordingly change the engine primitive for foreign key constraint verification

* foreign key verify operator and logical

* refactor: add comment explaining map in input

* add support for foreign key constraint verify on update

* refactor: move DML logic to sql_builder.go (vitessio#13920)

* OnlineDDL: fix nil 'completed_timestamp' for cancelled migrations (vitessio#13928)

* Silence 'CheckThrottler' gRPC calls (vitessio#13925)

* migrate vtorc to use cobra commands (vitessio#13917)

* MoveTables:  allow copying all tables in a single atomic copy phase cycle (vitessio#13137)

* proto: Faster clone (vitessio#13914)

* Properly support ignore_nulls in CreateLookupVindex (vitessio#13913)

* [staticcheck] Last few staticchecks! (vitessio#13909)

* icuregex: Update to ICU 73 (vitessio#13912)

* gen4: Fast aggregations (vitessio#13904)

* Use correct syntax in test (vitessio#13907)

* Misc Local Install improvements. (vitessio#13446)

* Consolidate helper functions for working with proto3 time messages (vitessio#13905)

* Add vtsql flags to vtadmin (vitessio#13674)

* MoveTables: add flag to specify that routing rules should not be created when a movetables workflow is created (vitessio#13895)

* [staticcheck] miscellaneous tidying (vitessio#13892)

* [misc] tidy imports (vitessio#13885)

* Remove duplicate ACL check in tabletserver handleHTTPConsolidations (vitessio#13876)

* vtexplain: Fix passing through context for cleanup (vitessio#13900)

* [staticcheck] Cleanup deprecations (vitessio#13898)

* inputs method to return additional information about the input primitive (vitessio#13883)

* vttablet: do not notify `vtgate` about internal tables (vitessio#13897)

* Skip launchable if the Pull Request is marked as a Draft (vitessio#13886)

* vtctldclient: support OnlineDDL `complete`, `launch` commands  (vitessio#13896)

* collations: implement collation dumping as a docker image (vitessio#13879)

* sqlparser: Tablespace option is case sensitive (vitessio#13884)

* Clean up deprecated slice header usage and unused code (vitessio#13880)

* [misc] Delete more unused functions, tidy up dupe imports (vitessio#13878)

* collations: Refactor to separate basic collation information from data (vitessio#13868)

* [wrangler] cleanup unused functions (vitessio#13867)

* Fix setup order to avoid races (vitessio#13871)

* Add Foreign key verify constraint engine primitive (vitessio#13848)

* Foreign key cascade planning for DELETE and UPDATE queries (vitessio#13823)

* Fix merge conflict with new tests (vitessio#13869)

* vtctldclient OnlineDDL CANCEL (vitessio#13860)

* Add leak checking for vtgate tests (vitessio#13835)

* Fix for "text type with an unknown/unsupported collation cannot be hashed" error (vitessio#13852)

* Go 1.21 cleanups (vitessio#13862)

* VTGate Buffering: Use a more accurate heuristic for determining if we're doing a reshard (vitessio#13856)

* docker/bootstrap: remove --no-cache flag (vitessio#13785)

* Flakes: Improve reliability of vreplication_copy_parallel test (vitessio#13857)

* [main] Upgrade the Golang version to `go1.21.0` (vitessio#13853)

* Fix regular expression issue in Golang Upgrade and remove `release-14.0` from target branch (vitessio#13846)

* Migrates most workflows to 4 and 16 cores Large GitHub-Hosted-Runners (vitessio#13845)

* [onlineddl] retry and cleanup (vitessio#13830)

* Bump word-wrap from 1.2.3 to 1.2.4 in /web/vtadmin (vitessio#13569)

* Bump tough-cookie from 4.1.2 to 4.1.3 in /web/vtadmin (vitessio#13767)

* Skip VTAdmin build in Docker tests (vitessio#13836)

* Flakes: Synchronize access to logErrStacks in vterrors (vitessio#13827)

* Flakes: VReplication unit tests: reduce goroutine leakage (vitessio#13824)

* Remove explicit usage of etcd v2 (api and storage) (vitessio#13791)

* Add OnlineDDL show support (vitessio#13738)

* VReplication: Improve MoveTables Create Error Handling (vitessio#13737)

* Add 2 new metrics with tablet type labels (vitessio#13521)

* Add 2 more durability policies that allow RDONLY tablets to send semi-sync ACKs (vitessio#13698)

* CI: Misc test improvements to limit failures with various runners (vitessio#13825)

* Flakes: empty vtdataroot before starting a new vreplication e2e test (vitessio#13803)

* Fix `BackupShard` to get its options from its own flags (vitessio#13813)

* Flakes: skip flaky check that ETA for a VReplication VDiff2 Progress command is in the future. (vitessio#13804)

* Copy release notes for v17.0.2 and v16.0.4 (vitessio#13811)

* More union merging (vitessio#13743)

* Add Foreign key Cascade engine primitive (vitessio#13802)

* Add support for tuple as value type (vitessio#13800)

* Foreign Keys: `UPDATE` planning (vitessio#13762)

* Improving random query generation for endtoend testing (vitessio#13460)

* Flakes: Delete VTDATAROOT files in reparent test teardown within CI (vitessio#13793)

* vtgate: fix race condition iterating tables and views from schema tracker (vitessio#13673)

* Fixing `backup_pitr` flaky tests via wait-for loop on topo reads (vitessio#13781)

* Do not drain tablet in incremental backup (vitessio#13773)

* Address vttablet memory usage with backups to Azure Blob Service (vitessio#13770)

* Run auto golang upgrade only on vitessio/vitess (vitessio#13766)

* Flakes: remove non-determinism from vtctldclient MoveTables unit test (vitessio#13765)

* Minor --initialize-target-sequences followups (vitessio#13758)

* CI: fix onlineddl_scheduler flakiness (vitessio#13754)

* VReplication: Initialize Sequence Tables Used By Tables Being Moved (vitessio#13656)

* Bump docker images to `bullseye` (vitessio#13664)

* Use NodeJS v18 in VTAdmin Dockerfile (vitessio#13751)

* Refactor Expression and Statement Simplifier (vitessio#13636)

* Foreign Keys: `DELETE` planning (vitessio#13746)

* build: Allow passing in custom -ldflags (vitessio#13748)

* Point in time recovery: fix cross-tablet GTID evaluation (vitessio#13555)

* Cache info schema table info (vitessio#13724)

* BackupShard: support incremental backup (vitessio#13522)

* OnlineDDL: support @@migration_context in vtgate session. Use if non-empty (vitessio#13675)

* schemadiff: add time measure test for massive schema load and diff (vitessio#13697)

* Vtgate: pass 'SHOW VITESS_MIGRATIONS' to tablet's query executor (vitessio#13726)

* Move UNION planning to the operators (vitessio#13450)

* Fix vtcombo DBDDL plugin race condition (vitessio#13117)

* Foreign Keys: `INSERT` planning (vitessio#13676)

* go/vt/vitessdriver: implement driver.{Connector,DriverContext} (vitessio#13704)

* Backup: safe compressor/decompressor closure (vitessio#13668)

* sqlparser: Track if original default value is a literal (vitessio#13730)

* Solve RevertMigration.Comment read/write concurrency issue (vitessio#13700)

* `ApplySchema`: support `--batch-size` flag in 'direct' strategy (vitessio#13693)

* Fix closed channel `panic` in Online DDL cutover (vitessio#13729)

* mysql: Refactor dependencies (vitessio#13688)

* vtgate tablet gateway buffering: don't shutdown if not initialized (vitessio#13695)

* [OnlineDDL] add label so break works as intended (vitessio#13691)

* fastparse: Fix bug in overflow detection (vitessio#13702)

* Refactor code to remove `evalengine` as a dependency of `VTOrc` (vitessio#13642)

* `txthrottler`: remove `txThrottlerConfig` struct, rely on `tabletenv` (vitessio#13624)

* [vtctldclient] flags need to be defined to be deprecated (vitessio#13681)

* Add dry-run/monitoring-only mode for TxThrottler (vitessio#13604)

* Enhancing VTGate buffering for MoveTables and Shard by Shard Migration (vitessio#13507)

* Improvements to PRS (vitessio#13623)

* Errant GTID Metrics Refactor (vitessio#13670)

* Improve logging and renaming PrimaryTermStartTimestamp in vttablets (vitessio#13625)

* Fix a couple of logs in VTOrc (vitessio#13667)

* Throttler: exempt apps via `UpdateThrottlerConfig --throttle-app-exempt` (vitessio#13666)

* Tablet throttler: inter-checks via gRPC  (vitessio#13514)

* Reroute 'ALTER VITESS_MIGRATION ... THROTTLE ...' through topo (vitessio#13511)

* Build foreign key definition in schema tracker (vitessio#13657)

* evalengine: Fix JSON weight string computation (vitessio#13669)

* Throttler: verify deprecated flags are still allowed (vitessio#13615)

* Backup & Restore: vtctldclient to support PITR flags (vitessio#13513)

* `UpdateThrottlerConfig --unthrottle-app ...` (vitessio#13494)

* tx throttler: healthcheck all cells if `--tx-throttler-healthcheck-cells` is undefined (vitessio#12477)

* evalengine: Improve weight string support (vitessio#13658)

* mysqlctl: Reduce logging for running commands (vitessio#13659)

* Add v15.0.4, v16.0.3, and v17.0.1 changelogs (vitessio#13661)

* [viper WatchConfig] platform-specific write to ensure callback fires exactly once (vitessio#13627)

* go/mysql: switch to new API for x/exp/slices.SortFunc (vitessio#13644)

* Per workload TxThrottler metrics (vitessio#13526)

* VReplication: Make Source Tablet Selection More Robust (vitessio#13582)

* Update known issues in `v16.x` and `v17.0.0` (vitessio#13618)

* Augment VTOrc to also store the shard records and use it to better judge Primary recoveries (vitessio#13587)

* icuregex: Lazy load ICU data into memory (vitessio#13640)

* Ensure to call `servenv.Init` when needed (vitessio#13638)

* GetSchema: limit concurrent operations (vitessio#13617)

* check keyspace snapshot time if none specified for backup restores (vitessio#13557)

* vtgate buffering logic: remove the deprecated healthcheck based implementation (vitessio#13584)

* Fix type comparisons for Nullsafe* functions (vitessio#13605)

* Reintroduce `TestReadOutdatedInstanceKeys` with debugging information (vitessio#13562)

* mysqlctl: Remove noisy log line (vitessio#13599)

* Vtctldclient MoveTables (vitessio#13015)

* txthrottler: add metrics for topoWatcher and healthCheckStreamer (vitessio#13153)

* Reduce usages of old horizon planning fallback (vitessio#13595)

* Throttler: reintroduce deprecated flags so that deprecation actually works (vitessio#13597)

* Incremental backup & recovery: restore-to-timestamp (vitessio#13270)

* Fix potential panics due to "Fail in goroutine after test completed" (vitessio#13596)

* ignore all error for views in engine reload (vitessio#13590)

* vtgate table schema tracking to use GetSchema rpc (vitessio#13544)

* MoveTables sequence e2e tests: change terminology to use basic vs simple everywhere for partial movetables workflows (vitessio#13435)

* Skip VTAdmin build in more places (vitessio#13588)

* Fix show character set (vitessio#13565)

* Remove unused chromedriver (vitessio#13573)

* fix TestQueryTimeoutWithTables flaky test (vitessio#13579)

* CI: Fix make build related issues (vitessio#13583)

* docker/mini: remove refs to orc configs (vitessio#13495)

* stats: use *time.Ticker instead of time.After() (vitessio#13492)

* VReplication: Ensure ROW events are sent within a transaction (vitessio#13547)

* Add a `keyspace` configuration in the `vschema` for foreign key mode (vitessio#13553)

* vreplication: Move to use collations package (vitessio#13566)

* Flaky tests: Fix race in memory topo (vitessio#13559)

* Fix flaky vtgate test TestInconsistentStateDetectedBuffering (vitessio#13560)

* Flaky tests: Fix wrangler tests (vitessio#13568)

* Optimize `make build` in `test.go` and in CI (vitessio#13567)

* Unset the PREFIX environment variable when building VTAdmin (vitessio#13554)

* vtctldclient: Add missing new backup option (vitessio#13543)

* Skip flaky test `TestReadOutdatedInstanceKeys` (vitessio#13561)

* Fix a number of encoding issues when evaluating expressions with the evalengine (vitessio#13509)

* Deflake `TestPlannedReparentShardPromoteReplicaFail` (vitessio#13548)

* [vipersync] deflake TestWatchConfig (vitessio#13545)

* vtgate v3 planner removal (vitessio#13458)

* Fix flakiness in VTOrc tests (vitessio#13489)

* Replace deprecated `github.com/golang/mock` with `go.uber.org/mock` (vitessio#13512)

* Fix dependencies in docker build script (vitessio#13520)

* fix docgen for subcommands (vitessio#13518)

* Merge pull request vitessio#13515 from planetscale/partial-movetables-traffic-status

* Correct unit test

* docker/k8s: add bookworm builds (vitessio#13436)

* ignore ongoing backfill vindex from routing selection (vitessio#13505)

* Adjust function names for improved clarity

* More fixes related to partial traffic handling

* Ignore unrelated shards in partial movetables workflow status

* Better handling of vreplication setState() failure (vitessio#13488)

* flags: Remove hardcoded runner paths (vitessio#13482)

* viperutil: Remove potential cross site reflecting issue (vitessio#13483)

* skip flaky test (vitessio#13501)

* feat: remove --disable_active_reparents flag in vttablet-up.sh (vitessio#13504)

* fix: error.as method usage to send pointer to the reference type expected. (vitessio#13496)

* Fix `TestGatewayBufferingWhileReparenting` flakiness (vitessio#13469)

* ApplySchema: deprecate '--allow_long_unavailability' flag (vitessio#10717)

* Incremental backup: accept GTID position without 'MySQL56/' flavor prefix (vitessio#13474)

* Deprecating and removing tablet throttler CLI flags and tests (vitessio#13246)

* Online DDL: improved row estimation via ANALYE TABLE with --analyze-table strategy flag (vitessio#13352)

* Tablet throttler: throttled app configuration via `vtctl UpdateThrottlerConfig` (vitessio#13351)

* added no-commit-collection option to launchable record build command (vitessio#13490)

* Fix remote VersionString API (vitessio#13484)

* Fix logging by omitting the host and port in `SetReadOnly` (vitessio#13470)

* `vtctl OnlineDDL`: complete command set (vitessio#12963)

* Random selection of keyspace based on available tablet (vitessio#13359)

* Improve and Fix Distinct Aggregation planner (vitessio#13466)

* Fix ubi8.arm64.mysql80 build package mirrorserver error (vitessio#13431)

* backup: Allow for upgrade safe backups (vitessio#13449)

* Merge pull request vitessio#13468 from timvaillancourt/examples-compose-fix-consul-tag

* Update a number of dependencies (vitessio#13031)

* Enable Tcp keep alive and provide keep alive period setting (vitessio#13434)

* rm mistaken commit

* Update docker-compose.beginners.yml too

* compose: fix `consul:latest` error

* Add support for kill statement (vitessio#13371)

* feat: remove excessive logging (vitessio#13459)

* schema.Reload(): ignore column reading errors for views only, error for tables (vitessio#13442)

* [CI] deflake viper sync tests (vitessio#13185)

* mysql: introduce icuregex package (vitessio#13391)

* Fix `Fakemysqldaemon` to store the host and port after `SetReplicationSource` call (vitessio#13439)

* Examples: only terminate vtadmin if it was started (vitessio#13433)

* [main] Upgrade-Downgrade Fix: Schema-initialization stuck on semi-sync ACKs while upgrading (vitessio#13411) (vitessio#13440)

* Move more horizon planning to the operators (vitessio#13412)

* Refactor backup_pitr into two distinct CI tests: builtin vs Xtrabackup (vitessio#13395)

* Improve VTOrc logging statements, now that we have alias as a field (vitessio#13428)

* vtorc: Cleanup more unused code (vitessio#13354)

* VReplication Workflows: make sequence tables follow routing rules (vitessio#13238)

* Ignore error while reading table data in Schema.Engine reload (vitessio#13421)

* Improve time taken to run the examples by optimizing `vtadmin` build (vitessio#13262)

* vtctl,vindexes: logs warnings and export stat for unknown vindex params (vitessio#13322)

* Add end-of-life documentation + re-organize internal documentation (vitessio#13401)

* Adding random query generation for endtoend testing of the Gen4 planner (vitessio#13260)

* Aggregation engine refactor (vitessio#13378)

* Deflake `TestQueryTimeoutWithDual` test (vitessio#13405)

* Optimize release notes generation to use GitHub Milestones (vitessio#13398)

* feat: don't run any reparent commands if the host is empty (vitessio#13396)

* `vttestserver`: persist vschema changes in `--persistent_mode` (vitessio#13065)

* Tablet throttler: only start watching SrvKeyspace once it's confirmed to exist (vitessio#13384)

* Support views in BaseShowTablesWithSizes for MySQL 8.0 (vitessio#13394)

* Fix incorrect output in release scripts (vitessio#13385)

* Adds support for ANY_VALUE (vitessio#13342)

* BaseShowTablesWithSizes: optimize MySQL 8.0 query (vitessio#13375)

* Forward port of release notes changes from v17.0.0 GA (vitessio#13370)

* feat: add timestamp to vtorc debug page (vitessio#13379)

* Prevent resetting replication every time we set replication source (vitessio#13377)

* Local example 101: idempotent on existing clusters (vitessio#13373)

* governance: clean up language, link steering doc from first occurrence instead of from a random occurrence (vitessio#13337)

* Add group_concat aggregation support (vitessio#13331)

* Improve VTOrc failure detection to be able to better handle dead primary failures (vitessio#13190)

* Improve lock action string (vitessio#13355)

* Add RestorePosition and RestoredBackupTime as metrics to vttablet (vitessio#13339)

* update link for reparenting guide (vitessio#13350)

* Handle inconsistent state error in query buffering (vitessio#13333)

* mysqlctl: Move more to use built in MySQL client (vitessio#13338)

* VTOrc: Update the primary key for all the tables from `hostname, port` to `alias` (vitessio#13243)

* docker/k8s: Cleanup done TODO (vitessio#13347)

* bug: don't always wrap aggregation in coalesce (vitessio#13348)

* Vttablet schema tracking: Fix _vt.schema_version corruption (vitessio#13045)

* bugfixes: collection of fixes to bugs found while fuzzing (vitessio#13332)

* Remove CI endtoend test for VReplication copy throttling (vitessio#13343)

* Use sqlparser for all dynamic query building in VDiff2 (vitessio#13319)

* txthrottler: verify config at vttablet startup, consolidate funcs (vitessio#13115)

* mysqlctl: Use DBA connection for schema operations (vitessio#13178)

* Bug fix: SQL queries erroring with message `unknown aggregation random` (vitessio#13330)

* Support complex aggregation in Gen4's Operators (vitessio#13326)

* [VTAdmin] Upgrade to use node 18.16.0 (vitessio#13288)

* Cleanup unused Dockerfile entries (vitessio#13327)

* Add metric for showing the errant GTIDs in VTOrc (vitessio#13281)

* vtgate planner: HAVING in the new operator horizon planner (vitessio#13289)

* vtgr: Remove deprecated vtgr (vitessio#13308)

* mysqlctl: Correctly encode database and table names (vitessio#13312)

* sqlparser: Add support for TIMESTAMPADD (vitessio#13314)

* Refactor and add a comment to schema initialisation code (vitessio#13309)

* Release notes for 17.0.0-rc2 (vitessio#13306)

* remove os.Exit (vitessio#13310)

* k8stopo: Remove the deprecated Kubernetes topo (vitessio#13303)

* vindexes: return unknown params (vitessio#12951)

* Operator planner refactor (vitessio#13294)

* Deprecate VTGR (vitessio#13301)

* k8stopo: Include deprecation warning (vitessio#13299)

* [main] Upgrade the Golang version to `go1.20.5` (vitessio#13256)

* evalengine: implement date/time math (vitessio#13274)

* increase size of reparent_journal columns (vitessio#13287)

* VReplication: Fix VDiff2 DeleteByUUID Query (vitessio#13255)

* Miscellaneous code modifications based on observations made while doing a code walkthrough (vitessio#12873)

* Set the number of threads for release notes generation with a flag (vitessio#13273)

* Fix and Make aggregation planner handle aggregation functions better (vitessio#13228)

* fix: ShardedRouting clone to clone slice of reference correctly (vitessio#13265)

* Remove viper warnings from local examples (vitessio#13234)

* Add flag to VTOrc to enable/disable its ability to run ERS (vitessio#13259)

* Remove `out.txt` and add `release-17.0` to go upgrade automation (vitessio#13261)

* build(deps-dev): bump vite from 4.2.1 to 4.2.3 in /web/vtadmin (vitessio#13240)

* Copy v17.0.0-rc changelog to main (vitessio#13248)

* fix: GetField to use existing session for query (vitessio#13219)

* Fix flakiness in `TestDeadPrimaryRecoversImmediately` (vitessio#13232)

* Augmenting the `GetSchema` RPC to also work for `Table` and `All` type of input (vitessio#13197)

* Incremental backup and point in time recovery for XtraBackup  (vitessio#13156)

* VReplication: More intelligently manage vschema table entries on unsharded targets (vitessio#13220)

* Use $hostname in vtadmin script as other scripts do (vitessio#13231)

* Tablet throttler: throttler-config-via-topo defaults 'true', deprecation message for old flags (vitessio#13130)

* [ci] add generator for templated flag testdata (vitessio#13150)

* schemadiff: validating case-sensitive view names (vitessio#13208)

* Add security audit report (vitessio#13221)

* gentler warning message on config-not-found (vitessio#13215)

* Bump the vitess version on main (vitessio#13212)

* Handle DISTINCT with the new operators (vitessio#13201)

* Gen4: move insert planner to gen4 (vitessio#12934)
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 16, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 16, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 18, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 18, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 18, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 21, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 23, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
maxenglander added a commit to planetscale/debezium-connector-planetscale that referenced this pull request Oct 25, 2024
Enable support for enums during vstream copy phase.

There are two reasons that the connector does not handle `enum` for PSDB branches.

 1. The upstream debezium-connector-vitess simply does not support
    `enum` during the VStream copy phase. It tries to cast the row value
    to an integer, but the value is a string. It seems support for
    `enum` landed in 2021
    debezium#20, and
    support for snapshots (VStream Copy) landed in 2022
    debezium#112,
    without taking the former into account. This is easily fixed by
    finding finding the index of the string
    value in the list of values obtained from `column_type` during the
    schema discovery phase at the beginning of the VStream.
 2. However, this isn't working on some PSDB branches which don't have
    the fix vitessio/vitess#13045 for this bug
    vitessio/vitess#12981. Fixable by
    backporting the bugfix or upgrading those branches.

Signed-off-by: Max Englander <max@planetscale.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bug Report: Vttablet is writing invalid _vt.schema_version rows
7 participants