Skip to content

Commit 8f683d7

Browse files
committed
json custom decoder support
1 parent 4c16b8d commit 8f683d7

File tree

11 files changed

+1384
-19
lines changed

11 files changed

+1384
-19
lines changed

arrow-json/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ ryu = "1.0"
5454
itoa = "1.0"
5555

5656
[dev-dependencies]
57+
arrow-select = { workspace = true }
5758
flate2 = { version = "1", default-features = false, features = ["rust_backend"] }
5859
serde = { version = "1.0", default-features = false, features = ["derive"] }
5960
futures = "0.3"

arrow-json/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
pub mod reader;
8787
pub mod writer;
8888

89-
pub use self::reader::{Reader, ReaderBuilder};
89+
pub use self::reader::{ArrayDecoder, DecoderFactory, Reader, ReaderBuilder, Tape, TapeElement};
9090
pub use self::writer::{
9191
ArrayWriter, Encoder, EncoderFactory, EncoderOptions, LineDelimitedWriter, Writer,
9292
WriterBuilder,

arrow-json/src/reader/list_array.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ impl<O: OffsetSizeTrait> ListArrayDecoder<O> {
4242
DataType::LargeList(f) if O::IS_LARGE => f,
4343
_ => unreachable!(),
4444
};
45-
let decoder = ctx.make_decoder(field.data_type(), field.is_nullable())?;
45+
let decoder = ctx.make_decoder(field.data_type(), field.is_nullable(), field.metadata())?;
4646

4747
Ok(Self {
4848
data_type: data_type.clone(),

arrow-json/src/reader/map_array.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,16 @@ impl MapArrayDecoder {
5353
_ => unreachable!(),
5454
};
5555

56-
let keys = ctx.make_decoder(fields[0].data_type(), fields[0].is_nullable())?;
57-
let values = ctx.make_decoder(fields[1].data_type(), fields[1].is_nullable())?;
56+
let keys = ctx.make_decoder(
57+
fields[0].data_type(),
58+
fields[0].is_nullable(),
59+
fields[0].metadata(),
60+
)?;
61+
let values = ctx.make_decoder(
62+
fields[1].data_type(),
63+
fields[1].is_nullable(),
64+
fields[1].metadata(),
65+
)?;
5866

5967
Ok(Self {
6068
data_type: data_type.clone(),

0 commit comments

Comments
 (0)