Skip to content

Commit 6505f1b

Browse files
authored
chore: Adds SerializedFileReader::new_with_metadata to avoid reading metadata from file on every invocation #3 (#4)
* ok * ok * ok * ok * ok * ok * ok * ok
1 parent 86561f0 commit 6505f1b

File tree

3 files changed

+55
-27
lines changed

3 files changed

+55
-27
lines changed

.github/workflows/rust.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
strategy:
3232
matrix:
3333
arch: [amd64]
34-
rust: [stable]
34+
rust: [nightly-2021-07-04]
3535
container:
3636
image: ${{ matrix.arch }}/rust
3737
env:
@@ -73,7 +73,7 @@ jobs:
7373
strategy:
7474
matrix:
7575
arch: [amd64]
76-
rust: [stable]
76+
rust: [nightly-2021-07-04]
7777
container:
7878
image: ${{ matrix.arch }}/rust
7979
env:
@@ -126,7 +126,7 @@ jobs:
126126
strategy:
127127
matrix:
128128
arch: [amd64]
129-
rust: [nightly-2021-07-04]
129+
rust: []
130130
container:
131131
image: ${{ matrix.arch }}/rust
132132
env:
@@ -174,7 +174,7 @@ jobs:
174174
strategy:
175175
matrix:
176176
os: [windows-latest, macos-latest]
177-
rust: [stable]
177+
rust: [nightly-2021-07-04]
178178
steps:
179179
- uses: actions/checkout@v2
180180
with:
@@ -202,7 +202,7 @@ jobs:
202202
strategy:
203203
matrix:
204204
arch: [amd64]
205-
rust: [stable]
205+
rust: [nightly-2021-07-04]
206206
container:
207207
image: ${{ matrix.arch }}/rust
208208
env:
@@ -257,7 +257,7 @@ jobs:
257257
strategy:
258258
matrix:
259259
arch: [amd64]
260-
rust: [stable]
260+
rust: [nightly-2021-07-04]
261261
steps:
262262
- uses: actions/checkout@v2
263263
with:
@@ -341,7 +341,7 @@ jobs:
341341
strategy:
342342
matrix:
343343
arch: [amd64]
344-
rust: [stable]
344+
rust: [nightly-2021-07-04]
345345
container:
346346
image: ${{ matrix.arch }}/rust
347347
env:

arrow/src/compute/kernels/comparison.rs

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -262,18 +262,28 @@ fn like_utf8_impl<OffsetSize: StringOffsetSizeTrait>(
262262
regex
263263
} else {
264264
let mut prev_char = None;
265-
let mut re_pattern = pat.replace(|c| {
266-
let res = c == '%' && prev_char != Some('\\');
267-
prev_char = Some(c);
268-
res
269-
}, ".*").replace("\\%", "%");
265+
let mut re_pattern = pat
266+
.replace(
267+
|c| {
268+
let res = c == '%' && prev_char != Some('\\');
269+
prev_char = Some(c);
270+
res
271+
},
272+
".*",
273+
)
274+
.replace("\\%", "%");
270275

271276
let mut prev_char = None;
272-
re_pattern = re_pattern.replace(|c| {
273-
let res = c == '_' && prev_char != Some('\\');
274-
prev_char = Some(c);
275-
res
276-
}, ".").replace("\\_", "_");
277+
re_pattern = re_pattern
278+
.replace(
279+
|c| {
280+
let res = c == '_' && prev_char != Some('\\');
281+
prev_char = Some(c);
282+
res
283+
},
284+
".",
285+
)
286+
.replace("\\_", "_");
277287
let re = RegexBuilder::new(&format!("^{}$", re_pattern))
278288
.case_insensitive(!case_sensitive)
279289
.build()
@@ -383,18 +393,28 @@ fn like_utf8_scalar_impl<OffsetSize: StringOffsetSizeTrait>(
383393
}
384394
} else {
385395
let mut prev_char = None;
386-
let mut re_pattern = right.replace(|c| {
387-
let res = c == '%' && prev_char != Some('\\');
388-
prev_char = Some(c);
389-
res
390-
}, ".*").replace("\\%", "%");
396+
let mut re_pattern = right
397+
.replace(
398+
|c| {
399+
let res = c == '%' && prev_char != Some('\\');
400+
prev_char = Some(c);
401+
res
402+
},
403+
".*",
404+
)
405+
.replace("\\%", "%");
391406

392407
let mut prev_char = None;
393-
re_pattern = re_pattern.replace(|c| {
394-
let res = c == '_' && prev_char != Some('\\');
395-
prev_char = Some(c);
396-
res
397-
}, ".").replace("\\_", "_");
408+
re_pattern = re_pattern
409+
.replace(
410+
|c| {
411+
let res = c == '_' && prev_char != Some('\\');
412+
prev_char = Some(c);
413+
res
414+
},
415+
".",
416+
)
417+
.replace("\\_", "_");
398418
let re = RegexBuilder::new(&format!("^{}$", re_pattern))
399419
.case_insensitive(!case_sensitive)
400420
.build()

parquet/src/file/serialized_reader.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,14 @@ impl<R: 'static + ChunkReader> SerializedFileReader<R> {
138138
})
139139
}
140140

141+
/// Creates file reader from a Parquet file, using pre-read metadata.
142+
pub fn new_with_metadata(chunk_reader: R, metadata: ParquetMetaData) -> Self {
143+
Self {
144+
chunk_reader: Arc::new(chunk_reader),
145+
metadata,
146+
}
147+
}
148+
141149
/// Filters row group metadata to only those row groups,
142150
/// for which the predicate function returns true
143151
pub fn filter_row_groups(

0 commit comments

Comments
 (0)