-
Notifications
You must be signed in to change notification settings - Fork 3.8k
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
schemachanger: Implement DROP CONSTRAINT
in declarative schema changer
#96115
Conversation
af9ed1f
to
5a1f065
Compare
b07ed00
to
7f6f995
Compare
This is ready for a look! |
DROP CONSTRAINT
in declarative schema changerDROP CONSTRAINT
in declarative schema changer
7f6f995
to
300bcde
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have only minor comments, besides: this needs some more test cases involving awkward scenarios such as dropping check constraints with type/sequence refs, partial unique-without-indexes, etc. They don't necessarily have to be end-to-end. Logic test cases are fine, provided they exist (do they?) also the data-driven tests in scplan might be useful to check that the planner does the right thing in those annoying multi-statement cases. I don't see the cross-descriptor constraint is absent before *
rules show up anywhere in this PR.
pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_drop_constraint.go
Show resolved
Hide resolved
pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_drop_constraint.go
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing major from me. This seems relatively painless. Great work!
9,AlterTableDropConstraint/alter_table_drop_1_check_constraint | ||
9,AlterTableDropConstraint/alter_table_drop_2_check_constraints | ||
9,AlterTableDropConstraint/alter_table_drop_3_check_constraints |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do you have a sense of where these two come from? Might be worth looking at the traces before and after to get a sense. I don't think this blocks this PR, but we should understand it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I honestly don't. I'd love to understand it more afterward (maybe in the stability period?). I remember seeing similar results for other constraint-related statements in the new schema changer.
pkg/sql/schemachanger/scbuild/internal/scbuildstmt/alter_table_drop_constraint.go
Outdated
Show resolved
Hide resolved
pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_object.go
Outdated
Show resolved
Hide resolved
pkg/sql/schemachanger/scplan/internal/rules/current/dep_drop_object.go
Outdated
Show resolved
Hide resolved
be934f0
to
ce2d209
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
This commit changed sc operations emmitted on the adding/dropping path of FK constraint. The major change is to recognize that FK constraints are "cross-descriptor" constraints and thus we need to make accompanying changes in the referenced tables whenever we make changes to the referencing table.
3a8f6f5
to
33ad697
Compare
This commit implements `DROP CONSTRAINT`, turn it on by default, and added tests.
33ad697
to
2428a43
Compare
CI failed due to a flaky test, borsing bors r+ |
95622: backupccl,storage: add logs around manifest handling and ExportRequest pagination r=stevendanna a=adityamaru backupccl: add logging to backup manifest handling Release note: None storage: log the ExportRequest pagination reason Release note: None Epic: None 95865: cmd/roachtest: adapt disk-stall detection roachtest r=nicktrav,erikgrinaker a=jbowens Move the existing disk-stall/* roachtests under disk-stall/fuse/* (for the FUSE filesystem approach to stalling) and skip them for now. Currently, they're not capable of stalling the disk longer 50us (see #95886), which makes them unreliable at exercising stalls. Add two new roachtests, disk-stall/dmsetup and disk-stall/cgroup that use dmsetup and cgroup bandwidth restrctions respectively to reliably induce a write stall for an indefinite duration. Informs #94373. Epic: None Release note: None 95999: multitenant: add multitenant/shared-process/basic roachtest r=stevendanna a=msbutler This patch introduces a simple roachtest that runs in a shared-process tenant. This test imports a 500 tpcc workload (about 30 GB of replicated data), and runs the workload for 10 minutes. The test is run on a 4 node, 4vcpu cluster with local ssds. A future patch could complicate the test by running schema changes or other bulk operations. Fixes #95990 Release note: None 96115: schemachanger: Implement `DROP CONSTRAINT` in declarative schema changer r=Xiang-Gu a=Xiang-Gu This PR implements `ALTER TABLE t DROP CONSTRAINT cons_name` in declarative schema changer. Supported constraints include Checks, FK, and UniqueWithoutIndex. Dropping PK or Unique constraints will fall back to legacy schema changer, which in turn spits out an "not supported yet" error. Epic: None 96202: opt: inverted-index accelerate filters of the form j->0 @> '{"b": "c"} r=Shivs11 a=Shivs11 Previously, the optimizer did not plan inverted index scans for filters having an integer as the index for the fetch value in a filter alongside the "contains" or the "contained by" operator. To address this, we now build JSON arrays from fetch value expressions with integer indexes. From these JSON arrays, inverted spans are built for constraining scans over inverted indexes. With these changes chains of both integer and string fetch value operators are now supported alongside the "contains" and the "contained by" operators. (e.g., j->0 `@>` '{"b": "c"}' and j->0 <@ '{"b": "c"}'). Epic: [CRDB-3301](https://cockroachlabs.atlassian.net/browse/CRDB-3301) Fixes: #94667 Release note (performance improvement): The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators (->) with integer indices alongside the "contains" or the "contained by" operators, e.g, json_col->0 `@>` '{"b": "c"}' or json_col->0 <@ '{"b": "c"}' 96235: sem/tree: add support for producing vectorized data from strings r=cucaroach a=cucaroach tree.ValueHandler exposes raw machine type hooks that are used by vec_handler to build coldata.Vec's. Epic: CRDB-18892 Informs: #91831 Release note: None 96328: udf: allow strict UDF with no arguments r=DrewKimball a=DrewKimball This patch fixes the case when a strict UDF (returns null on null input) has no arguments. Previously, attempting to call such a function would result in `ERROR: reflect: call of reflect.Value.Pointer on zero Value`. Fixes #96326 Release note: None 96366: release: skip nil GitHub events r=celiala a=rail Previously, we referenced `*event.Event`, but in some cases the event objects are `nil`. This PR skips the nil GitHub event objects. Epic: none Release note: None Co-authored-by: adityamaru <[email protected]> Co-authored-by: Jackson Owens <[email protected]> Co-authored-by: Michael Butler <[email protected]> Co-authored-by: Xiang Gu <[email protected]> Co-authored-by: Shivam Saraf <[email protected]> Co-authored-by: Tommy Reilly <[email protected]> Co-authored-by: Drew Kimball <[email protected]> Co-authored-by: Rail Aliiev <[email protected]>
Build failed (retrying...): |
This PR was included in a batch that was canceled, it will be automatically retried |
Build failed (retrying...): |
Build failed (retrying...): |
Build succeeded: |
This PR implements
ALTER TABLE t DROP CONSTRAINT cons_name
in declarative schema changer.Supported constraints include Checks, FK, and UniqueWithoutIndex.
Dropping PK or Unique constraints will fall back to legacy schema changer, which in turn spits out an "not supported yet" error.
Epic: None