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

chore: refine the query queue is_heavy_action func #15166

Merged
merged 1 commit into from
Apr 3, 2024

Conversation

BohuTANG
Copy link
Member

@BohuTANG BohuTANG commented Apr 3, 2024

I hereby agree to the terms of the CLA available at: https://docs.databend.com/dev/policies/cla/

Summary

  • spill out a new function: is_heavy_action, to check a query is heavy or light, if heavy will add to queue.
  • add unit test for difference plan.
#[tokio::test(flavor = "multi_thread")]
async fn test_heavy_actions() -> Result<()> {
    struct Query {
        sql: &'static str,
        add_to_queue: bool,
    }

    let queries = [
        Query {
            sql: "create table t1(a int)", // DDL
            add_to_queue: false,
        },
        Query {
            sql: "select 1",
            add_to_queue: false,
        },
        Query {
            sql: "select version()", // FUNCTION
            add_to_queue: false,
        },
        Query {
            sql: "select * from numbers(10)", // Table Function
            add_to_queue: false,
        },
        Query {
            sql: "begin", // BEGIN
            add_to_queue: false,
        },
        Query {
            sql: "kill query 9", // KILL
            add_to_queue: false,
        },
        Query {
            sql: "select * from system.queries_queue", // SYSTEM
            add_to_queue: false,
        },
        Query {
            sql: "explain select * from system.queries_queue", // EXPLAIN SYSTEM
            add_to_queue: false,
        },
        Query {
            sql: "explain select * from t1", // EXPLAIN SELECT
            add_to_queue: false,
        },
        Query {
            sql: "insert into t1 values(1)", // INSERT
            add_to_queue: true,
        },
        Query {
            sql: "copy into t1 from @s1", // COPY INTO
            add_to_queue: true,
        },
        Query {
            sql: "copy into @s1 from (select * from t1)", // COPY INTO
            add_to_queue: true,
        },
        Query {
            sql: "update t1 set a = 2", // UPDATE
            add_to_queue: true,
        },
        Query {
            sql: "delete from t1", // DELETE
            add_to_queue: true,
        },
        Query {
            sql: "replace into t1 on(a) values(1)", // REPLACE INTO
            add_to_queue: true,
        },
        Query {
            sql: "merge into t1 using (select * from t2) as t2 on t1.a = t2.a when matched then delete",
            // MERGE INTO
            add_to_queue: true,
        },
    ];
  • Fixes #[Link the issue here]

Tests

  • Unit Test
  • Logic Test
  • Benchmark Test
  • No Test - Explain why

Type of change

  • Bug Fix (non-breaking change which fixes an issue)
  • New Feature (non-breaking change which adds functionality)
  • Breaking Change (fix or feature that could cause existing functionality not to work as expected)
  • Documentation Update
  • Refactoring
  • Performance Improvement
  • Other (please describe):

@BohuTANG BohuTANG requested a review from zhang2014 April 3, 2024 10:46
@BohuTANG BohuTANG marked this pull request as ready for review April 3, 2024 10:46
@github-actions github-actions bot added the pr-chore this PR only has small changes that no need to record, like coding styles. label Apr 3, 2024
@BohuTANG BohuTANG merged commit 069f34d into databendlabs:main Apr 3, 2024
81 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr-chore this PR only has small changes that no need to record, like coding styles.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants