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

Refine logical op in TiFlash #9523

Merged
merged 48 commits into from
Oct 17, 2024
Merged

Conversation

windtalker
Copy link
Contributor

@windtalker windtalker commented Oct 14, 2024

What problem does this PR solve?

Issue Number: close #9146

Problem Summary:
According to #9146, the logical operator in TiFlash is kind of low efficient.

What is changed and how it works?

This pr refine logical operator using the following ways

  1. use a new algorithm to handle 3-value logical op, which can avoid data copy when the input column is Nullable(UInt8)
  2. Add new struct NullableAssociativeOperationImpl to handle nullable column specifically, so the original AssociativeOperationImpl don't need to consider null value
  3. If the input column has both not null and nullable columns, always handle the not null column first
  4. add some quick path if the input contains constant value
  5. Optimize NullableAssociativeOperationImpl/AssociativeOperationImpl for the case that input column is 2

benchmark results
Run on (72 X 3300 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x36)
L1 Instruction 32 KiB (x36)
L2 Unified 1024 KiB (x36)
L3 Unified 25344 KiB (x2)
Load Average: 23.98, 20.10, 14.61

-----------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                                   Time             CPU   Iterations
-----------------------------------------------------------------------------------------------------------------------------
LogicalOpBench/LegacyLogical_And_not_null_uint8_1_constant_true/iterations:1000         36373 ns        36248 ns         1000
LogicalOpBench/OptLogical_And_not_null_uint8_1_constant_true/iterations:1000             9398 ns         9361 ns         1000
LogicalOpBench/LegacyLogical_And_not_null_uint8_1_constant_false/iterations:1000        36602 ns        36473 ns         1000
LogicalOpBench/OptLogical_And_not_null_uint8_1_constant_false/iterations:1000             324 ns          323 ns         1000
LogicalOpBench/LegacyLogical_And_not_null_uint8_1_constant_null/iterations:1000         43667 ns        43514 ns         1000
LogicalOpBench/OptLogical_And_not_null_uint8_1_constant_null/iterations:1000            11052 ns        11014 ns         1000
LogicalOpBench/LegacyLogical_And_nullable_uint8_1_constant_true/iterations:1000         82794 ns        82510 ns         1000
LogicalOpBench/OptLogical_And_nullable_uint8_1_constant_true/iterations:1000             8390 ns         8362 ns         1000
LogicalOpBench/LegacyLogical_And_nullable_uint8_1_constant_false/iterations:1000        84671 ns        84379 ns         1000
LogicalOpBench/OptLogical_And_nullable_uint8_1_constant_false/iterations:1000             328 ns          325 ns         1000
LogicalOpBench/LegacyLogical_And_nullable_uint8_1_constant_null/iterations:1000         84491 ns        84209 ns         1000
LogicalOpBench/OptLogical_And_nullable_uint8_1_constant_null/iterations:1000            13614 ns        13572 ns         1000
LogicalOpBench/LegacyLogical_And_nullable_uint8_1_nullable_uint8_2/iterations:1000     144574 ns       144051 ns         1000
LogicalOpBench/OptLogical_And_nullable_uint8_1_nullable_uint8_2/iterations:1000         23065 ns        22977 ns         1000
LogicalOpBench/LegacyLogical_And_not_null_uint8_1_nullable_uint8_2/iterations:1000      86770 ns        86459 ns         1000
LogicalOpBench/OptLogical_And_not_null_uint8_1_nullable_uint8_2/iterations:1000         19399 ns        19333 ns         1000
LogicalOpBench/LegacyLogical_And_not_null_uint8_1_not_null_uint8_2/iterations:1000      34656 ns        34543 ns         1000
LogicalOpBench/OptLogical_And_not_null_uint8_1_not_null_uint8_2/iterations:1000         11025 ns        10981 ns         1000
LogicalOpBench/LegacyLogical_Or_not_null_uint8_1_constant_true/iterations:1000          27116 ns        27019 ns         1000
LogicalOpBench/OptLogical_Or_not_null_uint8_1_constant_true/iterations:1000               337 ns          334 ns         1000
LogicalOpBench/LegacyLogical_Or_not_null_uint8_1_constant_false/iterations:1000         26937 ns        26834 ns         1000
LogicalOpBench/OptLogical_Or_not_null_uint8_1_constant_false/iterations:1000            10299 ns        10262 ns         1000
LogicalOpBench/LegacyLogical_Or_not_null_uint8_1_constant_null/iterations:1000          43764 ns        43623 ns         1000
LogicalOpBench/OptLogical_Or_not_null_uint8_1_constant_null/iterations:1000             11110 ns        11069 ns         1000
LogicalOpBench/LegacyLogical_Or_nullable_uint8_1_constant_true/iterations:1000          79904 ns        79627 ns         1000
LogicalOpBench/OptLogical_Or_nullable_uint8_1_constant_true/iterations:1000               325 ns          325 ns         1000
LogicalOpBench/LegacyLogical_Or_nullable_uint8_1_constant_false/iterations:1000         81394 ns        81088 ns         1000
LogicalOpBench/OptLogical_Or_nullable_uint8_1_constant_false/iterations:1000             8520 ns         8487 ns         1000
LogicalOpBench/LegacyLogical_Or_nullable_uint8_1_constant_null/iterations:1000         100175 ns        99802 ns         1000
LogicalOpBench/OptLogical_Or_nullable_uint8_1_constant_null/iterations:1000             14632 ns        14577 ns         1000
LogicalOpBench/LegacyLogical_Or_nullable_uint8_1_nullable_uint8_2/iterations:1000      149244 ns       148650 ns         1000
LogicalOpBench/OptLogical_Or_nullable_uint8_1_nullable_uint8_2/iterations:1000          22921 ns        22845 ns         1000
LogicalOpBench/LegacyLogical_Or_not_null_uint8_1_nullable_uint8_2/iterations:1000       84355 ns        84043 ns         1000
LogicalOpBench/OptLogical_Or_not_null_uint8_1_nullable_uint8_2/iterations:1000          16607 ns        16544 ns         1000
LogicalOpBench/LegacyLogical_Or_not_null_uint8_1_not_null_uint8_2/iterations:1000       26207 ns        26114 ns         1000
LogicalOpBench/OptLogical_Or_not_null_uint8_1_not_null_uint8_2/iterations:1000           9776 ns         9735 ns         1000
LogicalOpBench/LegacyLogical_Xor_not_null_uint8_1_constant_true/iterations:1000         13206 ns        13161 ns         1000
LogicalOpBench/OptLogical_Xor_not_null_uint8_1_constant_true/iterations:1000             8687 ns         8657 ns         1000
LogicalOpBench/LegacyLogical_Xor_not_null_uint8_1_constant_false/iterations:1000        13285 ns        13244 ns         1000
LogicalOpBench/OptLogical_Xor_not_null_uint8_1_constant_false/iterations:1000            9272 ns         9234 ns         1000
LogicalOpBench/LegacyLogical_Xor_not_null_uint8_1_not_null_uint8_2/iterations:1000      13487 ns        13440 ns         1000
LogicalOpBench/OptLogical_Xor_not_null_uint8_1_not_null_uint8_2/iterations:1000         10957 ns        10913 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And3_not_null/iterations:1000                    51216 ns        51034 ns         1000
LogicalOpBench/optLogicalMultiParam_And3_not_null/iterations:1000                       18597 ns        18541 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And4_not_null/iterations:1000                    62808 ns        62574 ns         1000
LogicalOpBench/optLogicalMultiParam_And4_not_null/iterations:1000                       20494 ns        20421 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And5_not_null/iterations:1000                    84327 ns        84046 ns         1000
LogicalOpBench/optLogicalMultiParam_And5_not_null/iterations:1000                       24672 ns        24596 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And6_not_null/iterations:1000                   100479 ns       100115 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_not_null/iterations:1000                       34273 ns        34140 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And7_not_null/iterations:1000                   140124 ns       139620 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_not_null/iterations:1000                       49654 ns        49438 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And8_not_null/iterations:1000                   161336 ns       160706 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_not_null/iterations:1000                       61810 ns        61580 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And3_mixed/iterations:1000                      116845 ns       116431 ns         1000
LogicalOpBench/optLogicalMultiParam_And3_mixed/iterations:1000                          32459 ns        32347 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And4_mixed/iterations:1000                      209930 ns       209163 ns         1000
LogicalOpBench/optLogicalMultiParam_And4_mixed/iterations:1000                          47420 ns        47255 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And5_mixed/iterations:1000                      221171 ns       220359 ns         1000
LogicalOpBench/optLogicalMultiParam_And5_mixed/iterations:1000                          56417 ns        56220 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And6_mixed/iterations:1000                      292547 ns       291010 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_mixed/iterations:1000                          75148 ns        74844 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And7_mixed/iterations:1000                      327682 ns       326381 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_mixed/iterations:1000                          78415 ns        78110 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And8_mixed/iterations:1000                      387478 ns       386021 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_mixed/iterations:1000                          91493 ns        91133 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And3_nullable/iterations:1000                   234514 ns       233570 ns         1000
LogicalOpBench/optLogicalMultiParam_And3_nullable/iterations:1000                       58132 ns        57886 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And4_nullable/iterations:1000                   310998 ns       309782 ns         1000
LogicalOpBench/optLogicalMultiParam_And4_nullable/iterations:1000                       68798 ns        68559 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And5_nullable/iterations:1000                   367577 ns       366124 ns         1000
LogicalOpBench/optLogicalMultiParam_And5_nullable/iterations:1000                       84804 ns        84497 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And6_nullable/iterations:1000                   424706 ns       423008 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_nullable/iterations:1000                      106494 ns       106125 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And7_nullable/iterations:1000                   495560 ns       493782 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_nullable/iterations:1000                      125445 ns       124994 ns         1000
LogicalOpBench/legacyLogicalMultiParam_And8_nullable/iterations:1000                   540875 ns       538938 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_nullable/iterations:1000                      142113 ns       141637 ns         1000

For binary logical operators

  • for not-null column input speed up by 1.x - 3.x times
  • for nullable column input speed up by 4.x times
  • for constant column input speed up by 4.x - 100.x times

For multiple columns input logical operator speed by 2.x - 3.x times

For the same query in #9146
before this pr: 0.42s
after this pr: 0.26s

The original implementation of logical functions is renamed to FunctionsLegacyLogical.h for benchmark tests.

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

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

None

@ti-chi-bot ti-chi-bot bot added release-note-none Denotes a PR that doesn't merit a release note. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Oct 14, 2024
@windtalker
Copy link
Contributor Author

/test pull-integration-test

for (size_t i = 0; i < n; i++)
vec_res_not_null[i] |= Impl::resNotNull(data[i], false);
}
AssociativeOperationImpl<Impl, 6>::execute(not_null_uint8_columns, vec_res);
Copy link
Contributor

Choose a reason for hiding this comment

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

Keep previous comments to explain why uses 6 here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

converted_columns.emplace_back(std::move(converted_column));
while (nullable_uint8_columns.size() > 1)
{
NullableAssociativeOperationImpl<Impl, 6>::execute(
Copy link
Contributor

Choose a reason for hiding this comment

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

ditto

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

Columns converted_columns;

for (size_t index = 0; index < in.size(); index++)
void handleMultipleInputColumns(
Copy link
Contributor

Choose a reason for hiding this comment

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

Better add one full explanation for all the parameters, and describe the differences for other two handleXXXX methods if any.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

}
}

void convertAllInputToUInt8(
Copy link
Contributor

Choose a reason for hiding this comment

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

Better add comments to decribe the relations among output columnPtrs(not_null_uint8_columns, nullable_uint8_columns, converted_columns)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
@windtalker
Copy link
Contributor Author

/test pull-integration-test

Copy link
Contributor

@yibin87 yibin87 left a comment

Choose a reason for hiding this comment

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

LGTM

@ti-chi-bot ti-chi-bot bot added needs-1-more-lgtm Indicates a PR needs 1 more LGTM. approved labels Oct 16, 2024
{
while (nullable_uint8_columns.size() > 1)
{
// micro benchmark shows 4 << 6, 8 outperforms 6 slightly, and performance may decline when set to 10
Copy link
Contributor

Choose a reason for hiding this comment

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

Interesting results. Would you be willing to add some concrete numbers?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Here is one of the benchmark results, block row size is 10000

Run on (72 X 3300 MHz CPU s)
CPU Caches:
  L1 Data 32 KiB (x36)
  L1 Instruction 32 KiB (x36)
  L2 Unified 1024 KiB (x36)
  L3 Unified 25344 KiB (x2)
Load Average: 14.19, 14.67, 14.33
LogicalOpBench/optLogicalMultiParam_And6_not_null10/iterations:1000                     30615 ns        30481 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_not_null8/iterations:1000                      30045 ns        29925 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_not_null6/iterations:1000                      34859 ns        34705 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_not_null4/iterations:1000                      48457 ns        48274 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_not_null10/iterations:1000                     46847 ns        46678 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_not_null8/iterations:1000                      49235 ns        49053 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_not_null6/iterations:1000                      44633 ns        44456 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_not_null4/iterations:1000                      72414 ns        72134 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_not_null10/iterations:1000                     64318 ns        64091 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_not_null8/iterations:1000                      61097 ns        60847 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_not_null6/iterations:1000                      62362 ns        62137 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_not_null4/iterations:1000                      84139 ns        83801 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_not_null10/iterations:1000                     70640 ns        70362 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_not_null8/iterations:1000                      77622 ns        77322 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_not_null6/iterations:1000                      88216 ns        87870 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_not_null4/iterations:1000                      98208 ns        97835 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_not_null10/iterations:1000                    79753 ns        79401 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_not_null8/iterations:1000                     97168 ns        96756 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_not_null6/iterations:1000                    111726 ns       111300 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_not_null4/iterations:1000                    114488 ns       114067 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_not_null10/iterations:1000                    91365 ns        91036 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_not_null8/iterations:1000                    109042 ns       108619 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_not_null6/iterations:1000                    124121 ns       123599 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_not_null4/iterations:1000                    127939 ns       127453 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_nullable10/iterations:1000                     98956 ns        98600 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_nullable8/iterations:1000                     101464 ns       101110 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_nullable6/iterations:1000                     110970 ns       110589 ns         1000
LogicalOpBench/optLogicalMultiParam_And6_nullable4/iterations:1000                     112874 ns       112427 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_nullable10/iterations:1000                    109919 ns       109538 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_nullable8/iterations:1000                     109301 ns       108919 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_nullable6/iterations:1000                     123537 ns       123085 ns         1000
LogicalOpBench/optLogicalMultiParam_And7_nullable4/iterations:1000                     135217 ns       134737 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_nullable10/iterations:1000                    123250 ns       122759 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_nullable8/iterations:1000                     136376 ns       135838 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_nullable6/iterations:1000                     140589 ns       140092 ns         1000
LogicalOpBench/optLogicalMultiParam_And8_nullable4/iterations:1000                     148977 ns       148454 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_nullable10/iterations:1000                    141426 ns       140945 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_nullable8/iterations:1000                     148438 ns       147214 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_nullable6/iterations:1000                     207442 ns       206634 ns         1000
LogicalOpBench/optLogicalMultiParam_And9_nullable4/iterations:1000                     173037 ns       172412 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_nullable10/iterations:1000                   164605 ns       164018 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_nullable8/iterations:1000                    168543 ns       167935 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_nullable6/iterations:1000                    168199 ns       167608 ns         1000
LogicalOpBench/optLogicalMultiParam_And10_nullable4/iterations:1000                    194473 ns       193743 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_nullable10/iterations:1000                   180895 ns       180236 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_nullable8/iterations:1000                    178976 ns       178328 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_nullable6/iterations:1000                    191045 ns       190356 ns         1000
LogicalOpBench/optLogicalMultiParam_And11_nullable4/iterations:1000                    204776 ns       204063 ns         1000

optLogicalMultiParam_And6_not_null10 means 6 not null input columns, and template argument is 10
optLogicalMultiParam_And11_nullable10 means 11 nullable input columns, and template argument is 10

Copy link
Contributor

ti-chi-bot bot commented Oct 17, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: gengliqi, yibin87

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot bot added lgtm and removed needs-1-more-lgtm Indicates a PR needs 1 more LGTM. labels Oct 17, 2024
Copy link
Contributor

ti-chi-bot bot commented Oct 17, 2024

[LGTM Timeline notifier]

Timeline:

  • 2024-10-16 01:57:10.420962089 +0000 UTC m=+409027.569871922: ☑️ agreed by yibin87.
  • 2024-10-17 10:37:37.349012356 +0000 UTC m=+526654.497922185: ☑️ agreed by gengliqi.

Copy link
Contributor

ti-chi-bot bot commented Oct 17, 2024

@windtalker: Your PR was out of date, I have automatically updated it for you.

At the same time I will also trigger all tests for you:

/run-all-tests

trigger some heavy tests which will not run always when PR updated.

If the CI test fails, you just re-trigger the test that failed and the bot will merge the PR for you after the CI passes.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository.

Co-authored-by: Liqi Geng <gengliqiii@gmail.com>
@windtalker
Copy link
Contributor Author

/run-all-tests

@ti-chi-bot ti-chi-bot bot merged commit 9c44999 into pingcap:master Oct 17, 2024
5 checks passed
ti-chi-bot bot pushed a commit that referenced this pull request Oct 18, 2024
ref #9146

Signed-off-by: xufei <xufeixw@mail.ustc.edu.cn>
@windtalker windtalker mentioned this pull request Oct 28, 2024
12 tasks
@windtalker windtalker deleted the refine_logical_op branch December 6, 2024 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved lgtm release-note-none Denotes a PR that doesn't merit a release note. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

optimize logical operator function in TiFlash
3 participants