Skip to content

Commit 8f7463e

Browse files
authored
refactor(sql): share optimizer replay support and add lite harness (#19542)
* refactor(sql-test-support): extract parse_raw_expr * refactor(sql-test-support): share optimizer replay support * test(sql): add lite replay optimizer harness
1 parent 986932a commit 8f7463e

File tree

74 files changed

+2485
-611
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+2485
-611
lines changed

Cargo.lock

Lines changed: 29 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ databend-common-protos = { path = "src/meta/protos" }
104104
databend-common-script = { path = "src/query/script" }
105105
databend-common-settings = { path = "src/query/settings" }
106106
databend-common-sql = { path = "src/query/sql" }
107+
databend-common-sql-test-support = { path = "src/query/sql/test-support" }
107108
databend-common-sqlsmith = { path = "src/tests/sqlsmith" }
108109
databend-common-statistics = { path = "src/common/statistics" }
109110
databend-common-storage = { path = "src/common/storage" }
@@ -318,7 +319,7 @@ jiff = { version = "0.2.16", features = ["serde", "tzdb-bundle-always"] }
318319
jsonb = "0.5.5"
319320
jwt-simple = { version = "0.12.12", default-features = false, features = ["pure-rust"] }
320321
lance-core = "1.0.4"
321-
lance-encoding = "1.0.4"
322+
lance-encoding = { version = "1.0.4", features = ["protoc"] }
322323
lance-file = "1.0.4"
323324
lance-io = { version = "1.0.4", default-features = false }
324325
lance-table = "1.0.4"

src/query/functions/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ borsh = { workspace = true }
1313
bstr = { workspace = true }
1414
bumpalo = { workspace = true }
1515
ctor = { workspace = true }
16-
databend-common-ast = { workspace = true }
1716
databend-common-base = { workspace = true }
1817
databend-common-column = { workspace = true }
1918
databend-common-exception = { workspace = true }
@@ -39,7 +38,6 @@ jaq-std = { workspace = true }
3938
jiff = { workspace = true }
4039
jsonb = { workspace = true }
4140
libm = { workspace = true }
42-
log = { workspace = true }
4341
match-template = { workspace = true }
4442
md-5 = { workspace = true }
4543
naive-cityhash = { workspace = true }
@@ -63,6 +61,7 @@ uuid = { workspace = true }
6361
anyhow = { workspace = true }
6462
comfy-table = { workspace = true }
6563
databend-common-ast = { workspace = true }
64+
databend-common-sql-test-support = { workspace = true }
6665
divan = { workspace = true }
6766
goldenfile = { workspace = true }
6867

src/query/functions/benches/bench.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@ mod dummy {
3434
use databend_common_expression::FunctionContext;
3535
use databend_common_expression::type_check;
3636
use databend_common_functions::BUILTIN_FUNCTIONS;
37-
use databend_common_functions::test_utils as parser;
37+
use databend_common_sql_test_support as parser;
3838

3939
#[divan::bench(args = [10240, 102400])]
4040
fn parse(bencher: divan::Bencher, n: usize) {
4141
let text = "[".to_string() + &"true,".repeat(n) + "]";
4242
bencher.bench(|| {
43-
let _ = divan::black_box(parser::parse_raw_expr(&text, &[]));
43+
let _ = divan::black_box(parser::parse_raw_expr(&text, &[], &BUILTIN_FUNCTIONS));
4444
});
4545
}
4646

4747
#[divan::bench(args = [10240, 102400])]
4848
fn check(bencher: divan::Bencher, n: usize) {
4949
let text = "[".to_string() + &"true,".repeat(n) + "]";
50-
let raw_expr = parser::parse_raw_expr(&text, &[]);
50+
let raw_expr = parser::parse_raw_expr(&text, &[], &BUILTIN_FUNCTIONS);
5151

5252
bencher.bench(|| {
5353
let _ = divan::black_box(type_check::check(&raw_expr, &BUILTIN_FUNCTIONS));
@@ -57,7 +57,7 @@ mod dummy {
5757
#[divan::bench(args = [10240, 102400])]
5858
fn eval(bencher: divan::Bencher, n: usize) {
5959
let text = "[".to_string() + &"true,".repeat(n) + "]";
60-
let raw_expr = parser::parse_raw_expr(&text, &[]);
60+
let raw_expr = parser::parse_raw_expr(&text, &[], &BUILTIN_FUNCTIONS);
6161
let func_ctx = FunctionContext::default();
6262
let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS).unwrap();
6363
let block = DataBlock::new(vec![], 1);
@@ -250,7 +250,7 @@ mod datetime_fast_path {
250250
use databend_common_expression::types::timestamp::microseconds_to_days;
251251
use databend_common_expression::types::timestamp::timestamp_to_string;
252252
use databend_common_functions::BUILTIN_FUNCTIONS;
253-
use databend_common_functions::test_utils as parser;
253+
use databend_common_sql_test_support as parser;
254254
use jiff::civil::date;
255255
use jiff::tz::TimeZone;
256256
use rand::Rng;
@@ -457,7 +457,7 @@ mod datetime_fast_path {
457457
}
458458

459459
fn build_expr(sql: &str, columns: &[(&str, DataType)]) -> Expr {
460-
let raw_expr = parser::parse_raw_expr(sql, columns);
460+
let raw_expr = parser::parse_raw_expr(sql, columns, &BUILTIN_FUNCTIONS);
461461
type_check::check(&raw_expr, &BUILTIN_FUNCTIONS).unwrap()
462462
}
463463

src/query/functions/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ pub mod aggregates;
2727
mod cast_rules;
2828
pub mod scalars;
2929
pub mod srfs;
30-
pub mod test_utils;
3130

3231
pub fn is_builtin_function(name: &str) -> bool {
3332
let name = Ascii::new(name);

src/query/functions/tests/it/aggregates/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ pub fn run_agg_ast(
7070
.iter()
7171
.map(|(name, entry)| (*name, entry.data_type()))
7272
.collect::<Vec<_>>(),
73+
&BUILTIN_FUNCTIONS,
7374
);
7475

7576
let num_rows = entries

src/query/functions/tests/it/scalars/mod.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ mod tuple;
6060
mod variant;
6161
mod vector;
6262

63-
pub use databend_common_functions::test_utils as parser;
63+
pub use databend_common_sql_test_support as parser;
6464

6565
#[derive(Clone)]
6666
pub struct TestContext<'a> {
@@ -129,6 +129,7 @@ pub fn run_ast_with_context(file: &mut impl Write, text: impl AsRef<str>, mut ct
129129
.iter()
130130
.map(|(name, entry)| (*name, entry.data_type()))
131131
.collect::<Vec<_>>(),
132+
&BUILTIN_FUNCTIONS,
132133
);
133134

134135
let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?;
@@ -366,10 +367,14 @@ fn test_if_function() -> anyhow::Result<()> {
366367
use databend_common_expression::FromData;
367368
use databend_common_expression::Scalar;
368369
use databend_common_expression::types::*;
369-
let raw_expr = parser::parse_raw_expr("if(eq(n,1), sum_sid + 1,100)", &[
370-
("n", UInt8Type::data_type()),
371-
("sum_sid", Int32Type::data_type().wrap_nullable()),
372-
]);
370+
let raw_expr = parser::parse_raw_expr(
371+
"if(eq(n,1), sum_sid + 1,100)",
372+
&[
373+
("n", UInt8Type::data_type()),
374+
("sum_sid", Int32Type::data_type().wrap_nullable()),
375+
],
376+
&BUILTIN_FUNCTIONS,
377+
);
373378
let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?;
374379
let block = DataBlock::new(
375380
vec![

src/query/functions/tests/it/type_check.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use databend_common_expression::type_check;
2121
use databend_common_expression::types::timestamp_tz::TimestampTzType;
2222
use databend_common_expression::types::*;
2323
use databend_common_functions::BUILTIN_FUNCTIONS;
24-
use databend_common_functions::test_utils;
24+
use databend_common_sql_test_support::parse_raw_expr;
2525
use goldenfile::Mint;
2626
use jsonb::OwnedJsonb;
2727

@@ -235,7 +235,7 @@ fn test_find_leveled_eq_filters() {
235235
];
236236

237237
for (text, expected_catalog, expected_database, expected_table) in cases {
238-
let raw_expr = test_utils::parse_raw_expr(text, &cols);
238+
let raw_expr = parse_raw_expr(text, &cols, &BUILTIN_FUNCTIONS);
239239

240240
let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS).unwrap();
241241
let expr = type_check::rewrite_function_to_cast(expr);

src/query/service/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ zip = { workspace = true }
177177

178178
[dev-dependencies]
179179
arrow-cast = { workspace = true }
180+
databend-common-sql-test-support = { workspace = true }
180181
databend-storages-common-pruner = { workspace = true }
181182
geo = { workspace = true }
182183
goldenfile = { workspace = true }

0 commit comments

Comments
 (0)