Skip to content

Commit 221f5d2

Browse files
authored
Datum based like kernels (#4595) (#4732)
* Datum based like kernels (#4595) * Clippy * More Clippy * Review feedback
1 parent 4533271 commit 221f5d2

File tree

6 files changed

+555
-705
lines changed

6 files changed

+555
-705
lines changed

arrow-flight/src/sql/metadata/db_schemas.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
use std::sync::Arc;
2323

2424
use arrow_arith::boolean::and;
25-
use arrow_array::{builder::StringBuilder, ArrayRef, RecordBatch, Scalar, StringArray};
25+
use arrow_array::{builder::StringBuilder, ArrayRef, RecordBatch, StringArray};
2626
use arrow_ord::cmp::eq;
2727
use arrow_schema::{DataType, Field, Schema, SchemaRef};
2828
use arrow_select::{filter::filter_record_batch, take::take};
29-
use arrow_string::like::like_utf8_scalar;
29+
use arrow_string::like::like;
3030
use once_cell::sync::Lazy;
3131

3232
use super::lexsort_to_indices;
@@ -122,15 +122,13 @@ impl GetDbSchemasBuilder {
122122

123123
if let Some(db_schema_filter_pattern) = db_schema_filter_pattern {
124124
// use like kernel to get wildcard matching
125-
filters.push(like_utf8_scalar(
126-
&db_schema_name,
127-
&db_schema_filter_pattern,
128-
)?)
125+
let scalar = StringArray::new_scalar(db_schema_filter_pattern);
126+
filters.push(like(&db_schema_name, &scalar)?)
129127
}
130128

131129
if let Some(catalog_filter_name) = catalog_filter {
132-
let scalar = StringArray::from_iter_values([catalog_filter_name]);
133-
filters.push(eq(&catalog_name, &Scalar::new(&scalar))?);
130+
let scalar = StringArray::new_scalar(catalog_filter_name);
131+
filters.push(eq(&catalog_name, &scalar)?);
134132
}
135133

136134
// `AND` any filters together

arrow-flight/src/sql/metadata/tables.rs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ use std::sync::Arc;
2323

2424
use arrow_arith::boolean::{and, or};
2525
use arrow_array::builder::{BinaryBuilder, StringBuilder};
26-
use arrow_array::{ArrayRef, RecordBatch, Scalar, StringArray};
26+
use arrow_array::{ArrayRef, RecordBatch, StringArray};
2727
use arrow_ord::cmp::eq;
2828
use arrow_schema::{DataType, Field, Schema, SchemaRef};
2929
use arrow_select::{filter::filter_record_batch, take::take};
30-
use arrow_string::like::like_utf8_scalar;
30+
use arrow_string::like::like;
3131
use once_cell::sync::Lazy;
3232

3333
use super::lexsort_to_indices;
@@ -184,16 +184,13 @@ impl GetTablesBuilder {
184184
let mut filters = vec![];
185185

186186
if let Some(catalog_filter_name) = catalog_filter {
187-
let scalar = StringArray::from_iter_values([catalog_filter_name]);
188-
filters.push(eq(&catalog_name, &Scalar::new(&scalar))?);
187+
let scalar = StringArray::new_scalar(catalog_filter_name);
188+
filters.push(eq(&catalog_name, &scalar)?);
189189
}
190190

191191
let tt_filter = table_types_filter
192192
.into_iter()
193-
.map(|tt| {
194-
let scalar = StringArray::from_iter_values([tt]);
195-
eq(&table_type, &Scalar::new(&scalar))
196-
})
193+
.map(|tt| eq(&table_type, &StringArray::new_scalar(tt)))
197194
.collect::<std::result::Result<Vec<_>, _>>()?
198195
.into_iter()
199196
// We know the arrays are of same length as they are produced fromn the same root array
@@ -204,15 +201,14 @@ impl GetTablesBuilder {
204201

205202
if let Some(db_schema_filter_pattern) = db_schema_filter_pattern {
206203
// use like kernel to get wildcard matching
207-
filters.push(like_utf8_scalar(
208-
&db_schema_name,
209-
&db_schema_filter_pattern,
210-
)?)
204+
let scalar = StringArray::new_scalar(db_schema_filter_pattern);
205+
filters.push(like(&db_schema_name, &scalar)?)
211206
}
212207

213208
if let Some(table_name_filter_pattern) = table_name_filter_pattern {
214209
// use like kernel to get wildcard matching
215-
filters.push(like_utf8_scalar(&table_name, &table_name_filter_pattern)?)
210+
let scalar = StringArray::new_scalar(table_name_filter_pattern);
211+
filters.push(like(&table_name, &scalar)?)
216212
}
217213

218214
let batch = if let Some(table_schema) = table_schema {

arrow-string/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@
2020
pub mod concat_elements;
2121
pub mod length;
2222
pub mod like;
23+
mod predicate;
2324
pub mod regexp;
2425
pub mod substring;

0 commit comments

Comments
 (0)