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

Update on tables using OperationAttempt #1552

Merged
merged 34 commits into from
Oct 24, 2024

Conversation

amorton
Copy link
Contributor

@amorton amorton commented Oct 16, 2024

Waiting for the WhereCQLClauseAnalyzer to get strategy so it can check the where for a update

NOTE: builds on #1551

NOTE: no integration tests yet, and we need a where analysis strategy for updateOne - user must specify the full PK

What this PR does:

Which issue(s) this PR fixes:
Fixes #

Checklist

  • Changes manually tested
  • Automated Tests added/updated
  • Documentation added/updated
  • CLA Signed: DataStax CLA

amorton and others added 21 commits October 9, 2024 15:56
Changes the warnings associated commands to use the new ApiExcpetions,
and `warnings` in the return status now returns a list of error object V2.

To do that needed to improve the way CommandResult was built, so it always
had a status map so the CommandProcessor could append a warning. To do that
expanded the CommandResultBuilder added for the OperationAttempts, removed
the many overloads used for CommandResult, and updated all creation of the
CommandResult to use the builder.

See also #1518 to continue this
…cResponses

Missed adding errors to the CommandResult builder for
per document responses in InsertOperationPage
- change CommandErrorV2 property to match bean style
- change CreateKeyspaceIntegrationTest to get new response warning
and made both create and drop tests check the names of the commands
in the message
- our schema cache was not invalidating when a table was changed, so
we would always give out missing index errors rather than errors when
index was there but did not support the operation

- updated integration tests for the full error in the warning, and
made them check the id for the warning

- big fix, we were not turning on allow filtering when doing a
comparison query for some data types on indexed columns
Waiting for the WhereCQLClauseAnalyzer to get strategy so it
can check the where for a delete
Waiting for the WhereCQLClauseAnalyzer to get strategy so it
can check the where for a update
…eration-attempt

# Conflicts:
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/WhereCQLClauseAnalyzer.java
…empt' into ajm/update-command-operation-attempt
@Yuqi-Du
Copy link
Contributor

Yuqi-Du commented Oct 21, 2024

Table UpdateOne (UpdateMany is not supported)
There are twos rules for update clause,

  1. can not update on unknown column
  2. can not update on primary key column

Currently, I added these rule checks in ColumnAssignment constructor. here
Thought about creating a update clause analyzer(similar to filterAnalyzer), but needs to change butch of visibility identifier, may break encapsulation. @amorton, what do you think.

@Yuqi-Du
Copy link
Contributor

Yuqi-Du commented Oct 21, 2024

There is one thing weird, that is the status map for table updateOne.

We always construct this status map in UpdateAttemptPage.

    "status": {
        "matchedCount": 1,
        "modifiedCount": 1
    }

I know we can't know the update is successful or not, but is this response body needed?

@Yuqi-Du Yuqi-Du marked this pull request as ready for review October 21, 2024 16:09
@Yuqi-Du Yuqi-Du requested a review from a team as a code owner October 21, 2024 16:09
@Yuqi-Du Yuqi-Du changed the title Initial update on tables using OperationAttempt Update on tables using OperationAttempt Oct 21, 2024
…eration-attempt

# Conflicts:
#	src/main/java/io/stargate/sgv2/jsonapi/api/model/command/CommandResultBuilder.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/collections/DeleteOperationPage.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/CreateTableAttempt.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/DeleteTableOperation.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/UpdateTableOperation.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/WhereCQLClauseAnalyzer.java
#	src/test/java/io/stargate/sgv2/jsonapi/api/v1/tables/TableFilterIntegrationTest.java
#	src/test/java/io/stargate/sgv2/jsonapi/api/v1/util/DataApiResponseValidator.java
#	src/test/java/io/stargate/sgv2/jsonapi/api/v1/util/DataApiTableCommandSender.java
Base automatically changed from ajm/delete-command-operation-attempt to main October 21, 2024 23:17
…eration-attempt

# Conflicts:
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/DeleteAttemptPage.java
#	src/main/java/io/stargate/sgv2/jsonapi/service/operation/tables/DeleteAttemptBuilder.java
@amorton amorton requested review from a team and removed request for a team October 23, 2024 17:50
Copy link
Contributor Author

@amorton amorton left a comment

Choose a reason for hiding this comment

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

perms broken, reviewed in person some changes

…eration-attempt

# Conflicts:
#	src/test/java/io/stargate/sgv2/jsonapi/fixtures/testdata/TestData.java
@Yuqi-Du Yuqi-Du merged commit ef33b5a into main Oct 24, 2024
3 checks passed
@Yuqi-Du Yuqi-Du deleted the ajm/update-command-operation-attempt branch October 24, 2024 18:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants