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

refactor(expr): support variadic function in #[function] macro #12178

Merged
merged 15 commits into from
Sep 15, 2023

Conversation

wangrunji0408
Copy link
Contributor

@wangrunji0408 wangrunji0408 commented Sep 8, 2023

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.

What's changed and what's your intention?

This PR adds variadic support to #[function] macro.

#[function("array(...) -> list")]
fn array(row: impl Row) -> ListValue {
    ListValue::new(row.iter().map(|d| d.to_owned_datum()).collect())
}

Then we migrate the following functions using the macro:

  • array
  • row
  • concat_ws
  • format

Checklist

  • I have written necessary rustdoc comments
  • I have added necessary unit tests and integration tests
  • I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features Sqlsmith: Sql feature generation #7934).
  • My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
  • All checks passed in ./risedev check (or alias, ./risedev c)
  • My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)
  • My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

  • My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note

format() function now support variable inputs.

@wangrunji0408 wangrunji0408 force-pushed the wrj/varargs branch 2 times, most recently from 11539d8 to c2de14a Compare September 8, 2023 08:33
Base automatically changed from wrj/expr-template to main September 13, 2023 12:53
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
@wangrunji0408 wangrunji0408 changed the title refactor(expr): support varargs in #[function] macro refactor(expr): support variadic function in #[function] macro Sep 13, 2023
@codecov
Copy link

codecov bot commented Sep 13, 2023

Codecov Report

Merging #12178 (c21eaab) into main (9814af8) will decrease coverage by 0.01%.
Report is 23 commits behind head on main.
The diff coverage is 94.31%.

@@            Coverage Diff             @@
##             main   #12178      +/-   ##
==========================================
- Coverage   69.94%   69.93%   -0.01%     
==========================================
  Files        1411     1411              
  Lines      235298   235131     -167     
==========================================
- Hits       164581   164447     -134     
+ Misses      70717    70684      -33     
Flag Coverage Δ
rust 69.93% <94.31%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed Coverage Δ
src/expr/src/error.rs 21.05% <ø> (ø)
src/expr/src/expr/build.rs 80.13% <ø> (+0.27%) ⬆️
src/expr/src/expr/mod.rs 60.00% <ø> (+5.45%) ⬆️
src/expr/src/vector_op/array.rs 62.50% <62.50%> (ø)
src/expr/src/vector_op/format.rs 86.90% <86.36%> (ø)
src/expr/macro/src/gen.rs 97.04% <98.48%> (+0.01%) ⬆️
src/common/src/array/data_chunk.rs 84.15% <100.00%> (+0.02%) ⬆️
src/expr/macro/src/lib.rs 91.48% <100.00%> (+0.09%) ⬆️
src/expr/macro/src/types.rs 93.54% <100.00%> (+0.07%) ⬆️
src/expr/src/sig/func.rs 87.50% <100.00%> (-0.93%) ⬇️
... and 3 more

... and 5 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
Signed-off-by: Runji Wang <wangrunji0408@163.com>
src/expr/macro/src/gen.rs Outdated Show resolved Hide resolved
@@ -1203,75 +1202,6 @@ impl Binder {
}
}

fn rewrite_format_to_concat_ws(inputs: Vec<ExprImpl>) -> Result<Vec<ExprImpl>> {
Copy link
Member

@xxchan xxchan Sep 15, 2023

Choose a reason for hiding this comment

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

I don't know if the change is good or bad, because the old impl can report error earlier 😇

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Right. But it's not essential since we have to handle error at evaluation time anyways. It might be better to have an early check at binding time (e.g. if the format is constant, we ensure the number of arguments won't be too few.) Maybe we can add it back in the future. 😇

@xxchan
Copy link
Member

xxchan commented Sep 15, 2023

Others LGTM

Signed-off-by: Runji Wang <wangrunji0408@163.com>
@wangrunji0408 wangrunji0408 added this pull request to the merge queue Sep 15, 2023
Merged via the queue into main with commit 0032145 Sep 15, 2023
6 of 7 checks passed
@wangrunji0408 wangrunji0408 deleted the wrj/varargs branch September 15, 2023 09:21
Little-Wallace added a commit that referenced this pull request Sep 18, 2023
commit c82fc9c
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon Sep 18 08:37:33 2023 +0000

    chore(deps): Bump chrono from 0.4.30 to 0.4.31 (#12359)

    Signed-off-by: dependabot[bot] <support@github.com>
    Signed-off-by: Runji Wang <wangrunji0408@163.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Runji Wang <wangrunji0408@163.com>
    Co-authored-by: TennyZhuang <zty0826@gmail.com>

commit cbdc1ac
Author: Huangjw <1223644280@qq.com>
Date:   Mon Sep 18 16:22:35 2023 +0800

    chore(ci): move release jobs to main-cron pipeline (#12339)

commit b37a19c
Author: Yuhao Su <31772373+yuhao-su@users.noreply.github.com>
Date:   Mon Sep 18 16:18:01 2023 +0800

    feat(dashboard): add memory profiling (#12052)

commit 71d8170
Author: TennyZhuang <zty0826@gmail.com>
Date:   Mon Sep 18 15:58:26 2023 +0800

    refactor(expr): allow defining functions in frontend (#12287)

    Signed-off-by: TennyZhuang <zty0826@gmail.com>
    Co-authored-by: zwang28 <70626450+zwang28@users.noreply.github.com>
    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

commit cedaec9
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Mon Sep 18 15:54:10 2023 +0800

    feat(optimizer): support agg group by simplify rule (#12349)

commit 71d9b0b
Author: Noel Kwan <47273164+kwannoel@users.noreply.github.com>
Date:   Mon Sep 18 15:32:00 2023 +0800

    feat(meta): update StreamJob status on finish (#12342)

commit 784fe56
Author: zwang28 <70626450+zwang28@users.noreply.github.com>
Date:   Mon Sep 18 14:47:49 2023 +0800

    fix(backup): ensure correct delta log order (#12371)

commit 711ecd5
Author: congyi wang <58715567+wcy-fdu@users.noreply.github.com>
Date:   Mon Sep 18 14:11:24 2023 +0800

    feat(state_table): add iterator sub range under a certain pk prefix (#12251)

commit 1877aed
Author: xiangjinwu <17769960+xiangjinwu@users.noreply.github.com>
Date:   Mon Sep 18 13:49:15 2023 +0800

    refactor(sink): impl SinkFormatter for AppendOnly and Upsert (#12321)

commit f304ed2
Author: xxchan <xxchan22f@gmail.com>
Date:   Sun Sep 17 20:20:17 2023 +0800

    revert: Revert "chore: add platforms to hakari (#12333)" (#12363)

commit a975d93
Author: Bohan Zhang <tabvision@bupt.icu>
Date:   Sun Sep 17 19:04:24 2023 +0800

    fix: handle kafka sink message timeout error (#12350)

commit 8ef74ad
Author: Runji Wang <wangrunji0408@163.com>
Date:   Sat Sep 16 12:16:02 2023 +0800

    fix(udf): handle visibility of input chunks in UDTF (#12357)

    Signed-off-by: Runji Wang <wangrunji0408@163.com>

commit 31fdc26
Author: Xu <xzhseh@gmail.com>
Date:   Fri Sep 15 21:01:14 2023 -0400

    feat(expr): switch to `fancy-regex` crate & update the original version (#12329)

    Co-authored-by: xzhseh <xzhseh@users.noreply.github.com>

commit 0032145
Author: Runji Wang <wangrunji0408@163.com>
Date:   Fri Sep 15 16:57:25 2023 +0800

    refactor(expr): support variadic function in `#[function]` macro (#12178)

    Signed-off-by: Runji Wang <wangrunji0408@163.com>

commit 467ba4b
Author: stonepage <40830455+st1page@users.noreply.github.com>
Date:   Fri Sep 15 16:28:13 2023 +0800

    fix: stream backfill executor use correct schema (#12314)

    Co-authored-by: Noel Kwan <47273164+kwannoel@users.noreply.github.com>

commit c443197
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Fri Sep 15 16:22:13 2023 +0800

    feat(optimizer): support correlated column in order by (#12341)

commit 8a36ca3
Author: Noel Kwan <47273164+kwannoel@users.noreply.github.com>
Date:   Fri Sep 15 16:11:03 2023 +0800

    feat(meta): Add `creating_status` field for stream jobs (#12330)

commit bf5b14e
Author: zwang28 <70626450+zwang28@users.noreply.github.com>
Date:   Fri Sep 15 16:06:17 2023 +0800

    chore: lift decoding message size limit for ddl client (#12340)

commit c0060b2
Author: zwang28 <70626450+zwang28@users.noreply.github.com>
Date:   Fri Sep 15 15:32:14 2023 +0800

    feat(meta): add hummock config relevant tables to rw_catalog (#12337)

commit 59bb645
Author: xxchan <xxchan22f@gmail.com>
Date:   Fri Sep 15 14:54:54 2023 +0800

    chore: add platforms to hakari (#12333)

    Signed-off-by: Runji Wang <wangrunji0408@163.com>
    Co-authored-by: Runji Wang <wangrunji0408@163.com>

commit 7baa27f
Author: Bugen Zhao <i@bugenzhao.com>
Date:   Fri Sep 15 14:00:14 2023 +0800

    chore: split full debug info for release build (#12255)

    Signed-off-by: Bugen Zhao <i@bugenzhao.com>

commit a99e6f3
Author: Richard Chien <stdrc@outlook.com>
Date:   Fri Sep 15 13:58:19 2023 +0800

    fix(stream): fix pk indices of GroupTopN executors (#12304)

    Signed-off-by: Richard Chien <stdrc@outlook.com>

commit 43c010e
Author: Croxx <mrcroxx@outlook.com>
Date:   Fri Sep 15 11:59:41 2023 +0800

    chore: fix comment and metrics (#12331)

    Signed-off-by: MrCroxx <mrcroxx@outlook.com>

commit 214118b
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Sep 15 10:03:14 2023 +0800

    chore(deps): Bump serde_json from 1.0.106 to 1.0.107 (#12322)

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit 41ebb2a
Author: Xu <xzhseh@gmail.com>
Date:   Thu Sep 14 22:02:08 2023 -0400

    fix(regexp): substraction overflow when incorrectly speicifying `start` (#12325)

commit a566cfe
Author: Xu <xzhseh@gmail.com>
Date:   Thu Sep 14 12:58:35 2023 -0400

    feat(expr): add `array_sum` (#12162)

    Signed-off-by: Runji Wang <wangrunji0408@163.com>
    Co-authored-by: Runji Wang <wangrunji0408@163.com>

commit 28bbf10
Author: Croxx <mrcroxx@outlook.com>
Date:   Fri Sep 15 00:40:27 2023 +0800

    fix(ci): exclude tikv-jemalloc-sys in hakari check (#12320)

    Signed-off-by: MrCroxx <mrcroxx@outlook.com>

commit 5aa5a47
Author: zwang28 <70626450+zwang28@users.noreply.github.com>
Date:   Thu Sep 14 21:02:01 2023 +0800

    feat(meta): add hummock version relevant tables to rw_catalog (#12309)

commit a740364
Author: Huangjw <1223644280@qq.com>
Date:   Thu Sep 14 19:11:04 2023 +0800

    chore(ci): install locales in prebuilt image (#12311)

    Signed-off-by: Bugen Zhao <i@bugenzhao.com>
    Co-authored-by: Bugen Zhao <i@bugenzhao.com>

commit 0e72056
Author: StrikeW <wangsiyuanse@gmail.com>
Date:   Thu Sep 14 18:42:34 2023 +0800

    refactor(jdbc-sink): execute statements in batch and set isolation level to RC (#12250)

commit 827ed5e
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Thu Sep 14 17:31:41 2023 +0800

    refactor(connector): migrate cdc source metric from connector to compute (#12283)

commit a934185
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Thu Sep 14 17:31:04 2023 +0800

    fix(optimizer): relax scan predicate pull up mapping inverse restriction (#12308)

commit db0c099
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Thu Sep 14 17:30:28 2023 +0800

    feat(stream): handling watermark in temporal join (#12302)

commit 1ecea63
Author: Bugen Zhao <i@bugenzhao.com>
Date:   Thu Sep 14 16:43:14 2023 +0800

    refactor(risedev): split the steps for building and running playground (#12279)

    Signed-off-by: Bugen Zhao <i@bugenzhao.com>
    Co-authored-by: xxchan <xxchan22f@gmail.com>

commit ae4b1f8
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Sep 14 08:41:29 2023 +0000

    chore(deps): Bump clap from 4.4.2 to 4.4.3 (#12245)

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Bugen Zhao <i@bugenzhao.com>

commit 7ca370a
Author: Croxx <mrcroxx@outlook.com>
Date:   Thu Sep 14 16:24:19 2023 +0800

    feat(refill): fetch whole sst file when refilling (#12265)

    Signed-off-by: MrCroxx <mrcroxx@outlook.com>

commit ec129b6
Author: Yuhao Su <31772373+yuhao-su@users.noreply.github.com>
Date:   Thu Sep 14 16:04:37 2023 +0800

    chore: use cfg! to instead of #cfg[] for jemalloc control policy (#12307)

commit 9814af8
Author: Runji Wang <wangrunji0408@163.com>
Date:   Thu Sep 14 14:45:14 2023 +0800

    feat(expr): add `pg_sleep` function (#12294)

    Signed-off-by: Runji Wang <wangrunji0408@163.com>

commit 4525e67
Author: Noel Kwan <47273164+kwannoel@users.noreply.github.com>
Date:   Thu Sep 14 14:38:03 2023 +0800

    feat(stream): support source throttling (#12295)

commit 5ffd58d
Author: Dylan <chenzl25@mail2.sysu.edu.cn>
Date:   Thu Sep 14 14:35:03 2023 +0800

    refactor(connector): replace validate source rpc with jni (#12270)

commit 888f2dd
Author: Eric Fu <eric@singularity-data.com>
Date:   Thu Sep 14 14:32:59 2023 +0800

    fix: panic when dumping memory profile (#12276)

Signed-off-by: Little-Wallace <bupt2013211450@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants