-
Notifications
You must be signed in to change notification settings - Fork 1.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
[Feature] Support bitwise shift functions #14151
Conversation
Please rebase the code with branch main, recently we have applied some refactor over the |
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.
clang-tidy made some suggestions
@@ -0,0 +1,44 @@ | |||
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | |||
|
|||
#include "exec/pipeline/scan/lake_meta_scan_prepare_operator.h" |
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.
warning: 'exec/pipeline/scan/lake_meta_scan_prepare_operator.h' file not found [clang-diagnostic-error]
#include "exec/pipeline/scan/lake_meta_scan_prepare_operator.h"
^
|
||
#pragma once | ||
|
||
#include "exec/pipeline/scan/meta_scan_context.h" |
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.
warning: 'exec/pipeline/scan/meta_scan_context.h' file not found [clang-diagnostic-error]
#include "exec/pipeline/scan/meta_scan_context.h"
^
@@ -0,0 +1,89 @@ | |||
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | |||
|
|||
#include "exec/pipeline/scan/meta_scan_operator.h" |
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.
warning: 'exec/pipeline/scan/meta_scan_operator.h' file not found [clang-diagnostic-error]
#include "exec/pipeline/scan/meta_scan_operator.h"
^
|
||
#pragma once | ||
|
||
#include "exec/pipeline/pipeline_builder.h" |
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.
warning: 'exec/pipeline/pipeline_builder.h' file not found [clang-diagnostic-error]
#include "exec/pipeline/pipeline_builder.h"
^
@@ -0,0 +1,54 @@ | |||
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | |||
|
|||
#include "exec/pipeline/scan/meta_scan_prepare_operator.h" |
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.
warning: 'exec/pipeline/scan/meta_scan_prepare_operator.h' file not found [clang-diagnostic-error]
#include "exec/pipeline/scan/meta_scan_prepare_operator.h"
^
_mem_tracker(mem_tracker), | ||
_mem_pool(std::make_unique<MemPool>()) {} | ||
|
||
LakeTabletsChannel::~LakeTabletsChannel() { |
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.
warning: use '= default' to define a trivial destructor [modernize-use-equals-default]
LakeTabletsChannel::~LakeTabletsChannel() {
^
be/src/storage/lake_meta_reader.cpp
Outdated
@@ -0,0 +1,159 @@ | |||
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | |||
|
|||
#include "storage/lake_meta_reader.h" |
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.
warning: 'storage/lake_meta_reader.h' file not found [clang-diagnostic-error]
#include "storage/lake_meta_reader.h"
^
be/src/storage/lake_meta_reader.h
Outdated
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | ||
#pragma once | ||
|
||
#include <string> |
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.
warning: 'string' file not found [clang-diagnostic-error]
#include <string>
^
be/src/storage/olap_meta_reader.cpp
Outdated
@@ -0,0 +1,179 @@ | |||
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | |||
|
|||
#include "storage/olap_meta_reader.h" |
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.
warning: 'storage/olap_meta_reader.h' file not found [clang-diagnostic-error]
#include "storage/olap_meta_reader.h"
^
be/src/storage/olap_meta_reader.h
Outdated
// This file is licensed under the Elastic License 2.0. Copyright 2021-present, StarRocks Inc. | ||
#pragma once | ||
|
||
#include <string> |
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.
warning: 'string' file not found [clang-diagnostic-error]
#include <string>
^
874723f
to
a8ed04d
Compare
clang-tidy review says "All clean, LGTM! 👍" |
clang-tidy review says "All clean, LGTM! 👍" |
79860ea
to
e5280aa
Compare
clang-tidy review says "All clean, LGTM! 👍" |
[FE PR Coverage Check]😍 pass : 65 / 65 (100.00%) file detail
|
clang-tidy review says "All clean, LGTM! 👍" |
SonarCloud Quality Gate failed. 0 Bugs No Coverage information |
run starrocks_admit_test |
Kudos, SonarCloud Quality Gate passed! |
run starrocks_admit_test |
Congratulations on your first merged PR to StarRocks! 🎉 @sparklezzz |
NEW FUNCTIONS: 1. `BIT_SHIFT_LEFT(value, shift)`: perform bitwise left shift. 2. `BIT_SHIFT_RIGHT(value, shift)`: perform bitwise right shift arithmetic. 3. `BIT_SHIFT_RIGHT_LOGICAL(value, shift)`: perform bitwise right shift logical. In above three functions, the type of first operator is within TINYINT, SMALLINT, INT, BIGINT, LARGEINT, and the type of second operator is BIGINT. Test sql: ```sql CREATE TABLE IF NOT EXISTS `shift_test` ( `c1` TINYINT, `c2` SMALLINT, `c3` INT, `c4` BIGINT, `c5` LARGEINT ) ENGINE = OLAP DUPLICATE KEY(`c1`) DISTRIBUTED BY HASH(`c1`) BUCKETS 1 PROPERTIES ( "replication_num" = "1" ) ; INSERT INTO `shift_test` VALUES (11, 2222, 33333333, 444444444, 5555555555555); INSERT INTO `shift_test` VALUES (-11, -2222, -33333333, -444444444, -5555555555555); SELECT BIT_SHIFT_LEFT(11, 3), BIT_SHIFT_LEFT(2222, 3), BIT_SHIFT_LEFT(33333333, 3), BIT_SHIFT_LEFT(444444444, 3), BIT_SHIFT_LEFT(5555555555555, 3); SELECT BIT_SHIFT_LEFT(-11, 3), BIT_SHIFT_LEFT(-2222, 3), BIT_SHIFT_LEFT(-33333333, 3), BIT_SHIFT_LEFT(-444444444, 3), BIT_SHIFT_LEFT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT(11, 3), BIT_SHIFT_RIGHT(2222, 3), BIT_SHIFT_RIGHT(33333333, 3), BIT_SHIFT_RIGHT(444444444, 3), BIT_SHIFT_RIGHT(5555555555555, 3); SELECT BIT_SHIFT_RIGHT(-11, 3), BIT_SHIFT_RIGHT(-2222, 3), BIT_SHIFT_RIGHT(-33333333, 3), BIT_SHIFT_RIGHT(-444444444, 3), BIT_SHIFT_RIGHT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(11, 3), BIT_SHIFT_RIGHT_LOGICAL(2222, 3), BIT_SHIFT_RIGHT_LOGICAL(33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(-11, 3), BIT_SHIFT_RIGHT_LOGICAL(-2222, 3), BIT_SHIFT_RIGHT_LOGICAL(-33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(-444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(-5555555555555, 3); SELECT `c1`, BIT_SHIFT_LEFT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT_LOGICAL(`c1`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_LEFT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT_LOGICAL(`c2`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_LEFT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT_LOGICAL(`c3`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_LEFT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT_LOGICAL(`c4`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_LEFT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT_LOGICAL(`c5`, 3) FROM `shift_test`; SELECT BIT_SHIFT_LEFT(`c1`, `c1`), BIT_SHIFT_LEFT(`c2`, `c1`), BIT_SHIFT_LEFT(`c3`, `c1`), BIT_SHIFT_LEFT(`c4`, `c1`), BIT_SHIFT_LEFT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT(`c1`, `c1`), BIT_SHIFT_RIGHT(`c2`, `c1`), BIT_SHIFT_RIGHT(`c3`, `c1`), BIT_SHIFT_RIGHT(`c4`, `c1`), BIT_SHIFT_RIGHT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT_LOGICAL(`c1`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c2`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c3`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c4`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c5`, `c1`) FROM `shift_test`; ```
NEW FUNCTIONS: 1. `BIT_SHIFT_LEFT(value, shift)`: perform bitwise left shift. 2. `BIT_SHIFT_RIGHT(value, shift)`: perform bitwise right shift arithmetic. 3. `BIT_SHIFT_RIGHT_LOGICAL(value, shift)`: perform bitwise right shift logical. In above three functions, the type of first operator is within TINYINT, SMALLINT, INT, BIGINT, LARGEINT, and the type of second operator is BIGINT. Test sql: ```sql CREATE TABLE IF NOT EXISTS `shift_test` ( `c1` TINYINT, `c2` SMALLINT, `c3` INT, `c4` BIGINT, `c5` LARGEINT ) ENGINE = OLAP DUPLICATE KEY(`c1`) DISTRIBUTED BY HASH(`c1`) BUCKETS 1 PROPERTIES ( "replication_num" = "1" ) ; INSERT INTO `shift_test` VALUES (11, 2222, 33333333, 444444444, 5555555555555); INSERT INTO `shift_test` VALUES (-11, -2222, -33333333, -444444444, -5555555555555); SELECT BIT_SHIFT_LEFT(11, 3), BIT_SHIFT_LEFT(2222, 3), BIT_SHIFT_LEFT(33333333, 3), BIT_SHIFT_LEFT(444444444, 3), BIT_SHIFT_LEFT(5555555555555, 3); SELECT BIT_SHIFT_LEFT(-11, 3), BIT_SHIFT_LEFT(-2222, 3), BIT_SHIFT_LEFT(-33333333, 3), BIT_SHIFT_LEFT(-444444444, 3), BIT_SHIFT_LEFT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT(11, 3), BIT_SHIFT_RIGHT(2222, 3), BIT_SHIFT_RIGHT(33333333, 3), BIT_SHIFT_RIGHT(444444444, 3), BIT_SHIFT_RIGHT(5555555555555, 3); SELECT BIT_SHIFT_RIGHT(-11, 3), BIT_SHIFT_RIGHT(-2222, 3), BIT_SHIFT_RIGHT(-33333333, 3), BIT_SHIFT_RIGHT(-444444444, 3), BIT_SHIFT_RIGHT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(11, 3), BIT_SHIFT_RIGHT_LOGICAL(2222, 3), BIT_SHIFT_RIGHT_LOGICAL(33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(-11, 3), BIT_SHIFT_RIGHT_LOGICAL(-2222, 3), BIT_SHIFT_RIGHT_LOGICAL(-33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(-444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(-5555555555555, 3); SELECT `c1`, BIT_SHIFT_LEFT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT_LOGICAL(`c1`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_LEFT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT_LOGICAL(`c2`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_LEFT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT_LOGICAL(`c3`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_LEFT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT_LOGICAL(`c4`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_LEFT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT_LOGICAL(`c5`, 3) FROM `shift_test`; SELECT BIT_SHIFT_LEFT(`c1`, `c1`), BIT_SHIFT_LEFT(`c2`, `c1`), BIT_SHIFT_LEFT(`c3`, `c1`), BIT_SHIFT_LEFT(`c4`, `c1`), BIT_SHIFT_LEFT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT(`c1`, `c1`), BIT_SHIFT_RIGHT(`c2`, `c1`), BIT_SHIFT_RIGHT(`c3`, `c1`), BIT_SHIFT_RIGHT(`c4`, `c1`), BIT_SHIFT_RIGHT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT_LOGICAL(`c1`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c2`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c3`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c4`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c5`, `c1`) FROM `shift_test`; ```
NEW FUNCTIONS: 1. `BIT_SHIFT_LEFT(value, shift)`: perform bitwise left shift. 2. `BIT_SHIFT_RIGHT(value, shift)`: perform bitwise right shift arithmetic. 3. `BIT_SHIFT_RIGHT_LOGICAL(value, shift)`: perform bitwise right shift logical. In above three functions, the type of first operator is within TINYINT, SMALLINT, INT, BIGINT, LARGEINT, and the type of second operator is BIGINT. Test sql: ```sql CREATE TABLE IF NOT EXISTS `shift_test` ( `c1` TINYINT, `c2` SMALLINT, `c3` INT, `c4` BIGINT, `c5` LARGEINT ) ENGINE = OLAP DUPLICATE KEY(`c1`) DISTRIBUTED BY HASH(`c1`) BUCKETS 1 PROPERTIES ( "replication_num" = "1" ) ; INSERT INTO `shift_test` VALUES (11, 2222, 33333333, 444444444, 5555555555555); INSERT INTO `shift_test` VALUES (-11, -2222, -33333333, -444444444, -5555555555555); SELECT BIT_SHIFT_LEFT(11, 3), BIT_SHIFT_LEFT(2222, 3), BIT_SHIFT_LEFT(33333333, 3), BIT_SHIFT_LEFT(444444444, 3), BIT_SHIFT_LEFT(5555555555555, 3); SELECT BIT_SHIFT_LEFT(-11, 3), BIT_SHIFT_LEFT(-2222, 3), BIT_SHIFT_LEFT(-33333333, 3), BIT_SHIFT_LEFT(-444444444, 3), BIT_SHIFT_LEFT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT(11, 3), BIT_SHIFT_RIGHT(2222, 3), BIT_SHIFT_RIGHT(33333333, 3), BIT_SHIFT_RIGHT(444444444, 3), BIT_SHIFT_RIGHT(5555555555555, 3); SELECT BIT_SHIFT_RIGHT(-11, 3), BIT_SHIFT_RIGHT(-2222, 3), BIT_SHIFT_RIGHT(-33333333, 3), BIT_SHIFT_RIGHT(-444444444, 3), BIT_SHIFT_RIGHT(-5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(11, 3), BIT_SHIFT_RIGHT_LOGICAL(2222, 3), BIT_SHIFT_RIGHT_LOGICAL(33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(5555555555555, 3); SELECT BIT_SHIFT_RIGHT_LOGICAL(-11, 3), BIT_SHIFT_RIGHT_LOGICAL(-2222, 3), BIT_SHIFT_RIGHT_LOGICAL(-33333333, 3), BIT_SHIFT_RIGHT_LOGICAL(-444444444, 3), BIT_SHIFT_RIGHT_LOGICAL(-5555555555555, 3); SELECT `c1`, BIT_SHIFT_LEFT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT(`c1`, 3) FROM `shift_test`; SELECT `c1`, BIT_SHIFT_RIGHT_LOGICAL(`c1`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_LEFT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT(`c2`, 3) FROM `shift_test`; SELECT `c2`, BIT_SHIFT_RIGHT_LOGICAL(`c2`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_LEFT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT(`c3`, 3) FROM `shift_test`; SELECT `c3`, BIT_SHIFT_RIGHT_LOGICAL(`c3`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_LEFT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT(`c4`, 3) FROM `shift_test`; SELECT `c4`, BIT_SHIFT_RIGHT_LOGICAL(`c4`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_LEFT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT(`c5`, 3) FROM `shift_test`; SELECT `c5`, BIT_SHIFT_RIGHT_LOGICAL(`c5`, 3) FROM `shift_test`; SELECT BIT_SHIFT_LEFT(`c1`, `c1`), BIT_SHIFT_LEFT(`c2`, `c1`), BIT_SHIFT_LEFT(`c3`, `c1`), BIT_SHIFT_LEFT(`c4`, `c1`), BIT_SHIFT_LEFT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT(`c1`, `c1`), BIT_SHIFT_RIGHT(`c2`, `c1`), BIT_SHIFT_RIGHT(`c3`, `c1`), BIT_SHIFT_RIGHT(`c4`, `c1`), BIT_SHIFT_RIGHT(`c5`, `c1`) FROM `shift_test`; SELECT BIT_SHIFT_RIGHT_LOGICAL(`c1`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c2`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c3`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c4`, `c1`), BIT_SHIFT_RIGHT_LOGICAL(`c5`, `c1`) FROM `shift_test`; ```
What type of PR is this:
Which issues of this PR fixes :
Fixes #13221
Problem Summary(Required) :
NEW FUNCTIONS:
BIT_SHIFT_LEFT(value, shift)
: perform bitwise left shift.BIT_SHIFT_RIGHT(value, shift)
: perform bitwise right shift arithmetic.BIT_SHIFT_RIGHT_LOGICAL(value, shift)
: perform bitwise right shift logical.In above three functions, the type of first operator is within TINYINT, SMALLINT, INT, BIGINT, LARGEINT, and the type of second operator is BIGINT.
Test sql:
Checklist:
Bugfix cherry-pick branch check: