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

Implement indexes (currently only unique indexes are supported) #65

Merged
merged 30 commits into from
Sep 30, 2023

Conversation

KKould
Copy link
Member

@KKould KKould commented Sep 23, 2023

What is changed and how it works?

  • support unique field option declaration
  • support unique index
    • ddl
      • create table
      • drop table
    • dml
      • insert
      • delete
      • update
    • dql
      • filter
  • added RBO rules:
    • SimplifyFilter:
      • perform constant folding on the conditional expression in the Filter operator
    • PushPredicateIntoScan:
      • filter whether the field matches the index and push down to Scan
  • fixed RBO rule:
    • PushProjectThroughChild:
      • fixed the problem of missing fields when pushing down
    • PushLimitThroughJoin
      • fixed the problem that when the on condition in Join generates multiple same number of connection rows, the limit is exceeded
  • rename
    • Transaction -> Iter
    • Table -> Transaction
  • TableCodec
    • IndexMeta
    • Index

Code changes

  • Has Rust code change
  • Has CI related scripts change

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (add detailed scripts or steps below)
  • No code

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Note for reviewer

…esponding unique index, insert the index and check whether it already exists
used to extract the constant binary expression information corresponding to Column in the condition of the where clause
Fusion of marginal values with values within a range
constant folding -> expression extraction -> aggregation (and) -> rearrangement (or)
- RBO Rule: `PushProjectThroughChild`: fixed the problem of missing fields when pushing down
- RBO Rule: `PushLimitThroughJoin`: fixed the problem that when the on condition in Join generates multiple same number of connection rows, the limit limit is exceeded.
-
@KKould KKould requested a review from loloxwg September 23, 2023 18:29
@KKould KKould self-assigned this Sep 23, 2023
@KKould KKould added bug Something isn't working enhancement New feature or request invalid This doesn't seem right labels Sep 23, 2023
@KKould KKould linked an issue Sep 24, 2023 that may be closed by this pull request
@KKould KKould merged commit 6691037 into KipData:main Sep 30, 2023
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request invalid This doesn't seem right
Projects
None yet
1 participant